crontab定时调用执行shell脚本出错(mailed 165 bytes of output but got status 0x004b#012)

使用系统自带的任务调度crontab 发现手动运行脚本可以执行完成,但是自动定时就不能实现,检查shell脚本也没有错误。奇怪哪里导致的问题呢?

后来在网上查询和不断测试,得知和系统的环境变量有关系的。发现脚本中需要添加必要的环境变量才可以使脚本自动执行。

这种情况一般是由于在crontab文件中没有配置环境变量引起的。cron从用户所在的主目录中使用shell调用需要执行的命令。cron为每个shell提供了一个默认的环境,Linux下的定义如下:

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=用户名

HOME=用户主目录

在crontab文件中定义多个调度任务时,需要特别注意的一个问题就是环境变量的设置,因为我们手动执行某个脚本时,是在当前shell环境下进行的,程序能找到环境变量;而系统自动执行任务调度时,除了默认的环境,是不会加载任何其他环境变量的。因此就需要在crontab文件中指定任务运行所需的所有环境变量。

不要假定cron知道所需要的特殊环境,它其实并不知道。所以用户要保证在shell脚本中提供所有必要的路径和环境变量,除了一些自动设置的全局变量。以下三点需要注意:

1. 脚本中涉及文件路径时写绝对路径;

2. 脚本执行要用到环境变量时,通过source命令显式引入,例如:

#!/bin/sh

source /etc/profile

3. 当手动执行脚本没问题,但是crontab不执行时,可以尝试在crontab中直接引入环境变量解决问题,例如:

0****./etc/profile;/bin/sh/path/to/myscript.sh

好了,这个问题就这样解决了,反正是加上环境变量没错的。

————————————————

linux脚本出错仍执行后续脚本,crontab执行脚本出错相关推荐

  1. Linux Shell脚本语句执行失败,后续语句继续执行的问题

    Linux Shell脚本语句执行失败,后续语句继续执行的问题 问题 解决方法 问题 写了一个自动部署java后端的脚本,大致如下: A=password read -p "请输入密码:&q ...

  2. Linux定时任务Crontab执行PHP脚本

    http://blog.chinaunix.net/uid-7552018-id-182133.html crontab执行php脚本 http://www.jb51.net/article/2913 ...

  3. crontab执行shell脚本日志中出现乱码

    使用nutch开源的搜索引擎抓取网页信息,通过计划任务crontab执行shell脚本,并将启动信息记录进日志文件,但是每次都会出现乱码,如图所示 经过反复测试,排除了java程序问题,文件权限问题, ...

  4. Linux中shell运行方式,linux脚本中父shell与子shell 执行的几种方式

    本文主要介绍以下几个命令的区别: shell subshell source $ (commond) `commond` Linux执行Scripts有两种方式,主要区别在于是否建立subshell ...

  5. crontab执行脚本发邮件中文乱码,手动执行没有问题

    今天写了个脚本,定时给指定邮箱发送邮件,手动执行的时候没有问题,但添加到计划任务后发送的邮件就中文乱码,变成一个不知名的附件形式: 上网查了下原因 产生原因: 这是因为Unix/Linux下使用cro ...

  6. linux启动时、登录时或注销时执行脚本

    init.d开机启动 在启动时执行 Linux 脚本 有两种传统的方法可以实现在启动时执行命令或脚本: 方法 #1 - 使用 cron 任务 除了常用格式(分 / 时 / 日 / 月 / 周)外,cr ...

  7. linux脚本简单定时,shell之定时周期性执行脚本的方法示例

    示例 1.编写测试脚本脚本 time .sh $ cat time.sh #! /bin/bash echo $(date +%s) >> /home/ocean/out.txt 保存完毕 ...

  8. Linux JAVA执行source,linux 下source、sh、bash、./执行脚本的区别

    1.source命令用法: source  FileName 作用:在当前 bash环境下读取并执行FileName中的命令.该filename文件可以无"执行权限" 注:该命令通 ...

  9. linux java环境变量修改不生效_ansible执行带有环境变量的脚本不生效

    1背景 jenkins发布时,使用ansible执行远程主机上的启动tomcat脚本发现不生效,启动tomcat的脚本中有环境变量. ansible主机为:172.16.35.8 tomcat服务器为 ...

  10. Linux中sh执行脚本命令没有权限也能正常执行

    sh+脚本名称,可以不必事先设定shell的执行权限.因为这个是将test.sh作为参数传给sh(bash)命令来执行的.这时不是test.sh自己来执行,而是被人家调用执行,所以不要执行权限. [r ...

最新文章

  1. linux差分备份,完全和差分备份的自动化模型
  2. burn android images with fastboot
  3. Hadoop centos 6.5 配置
  4. CentOS7关于防火墙的命令
  5. TT和LG编程设计模式之代理
  6. 电脑选购:看完才明白,一体机和台式机电脑哪个好?
  7. 酷桌面:随身携带你的企业
  8. Python | 查找字符串中每个字符的频率
  9. linux 内存 virt,Linux 内存 virt res shr data swap 意义
  10. Android基础教程(六)之------- 参数的传递(Bundle)
  11. ConcurrentHashMap 底层原理,你真的理解了吗?
  12. 利用conda安装git
  13. 人工智能和大数据两者有什么联系
  14. 软件测试文档类型有哪些?
  15. 苹果4s忘记id密码怎么办_iPhone手机ID密码忘记了怎么办?三种方法轻松解决问题...
  16. 作为大数据技术面试官,我喜欢什么样的应届毕业生?
  17. Ubuntu 20.04.3 “have unmet dependencies“
  18. hdu5769Substring
  19. 关于nginx指向nacos遇到的坑
  20. STM32F103 GPIOA->CRL=0XFFF0FFFF配置端口方向

热门文章

  1. ECMAScript6面对大于0xFFFF的Unicode字符如何正确返回长度
  2. wstmart系统研究日志二
  3. 英语词汇篇 - 构词法
  4. 从0到1搭建一个自己的cli脚手架
  5. 安卓系统开机时间优化分析
  6. PanDownload 3.5.1 卢本伟修改版
  7. c语言can收发数据原理,汽车车载网络CAN收发器作用和工作原理
  8. 商品分类 商品类型 商品属性
  9. C语言经典例题-国际象棋棋盘
  10. 企业微信批量导入用户