crontab 提示 command not found 解决方案
crontab的定时任务会报错:command not found,手动执行脚本能成功。 1.crontab与环境变量 cron并不知道所需要的特殊环境变量。所以要保证在shelll脚本中提供所有必要的路径和环境变量,除了一些自动设置的全局变量。注意如下3点: 1)脚本中涉及文件路径时写全局路径; 2)脚本执行要用到程序或其他环境变量时,通过source命令引入环境变量,如: #!/bin/bash 或者在root的crontab文件中加入:
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
3)当手动执行脚本OK,但是crontab不执行时。是环境变量问题,可以在crontab中直接引入环境变量解决。如: 2.其他应该注意的问题 1)新创建的cron job,不会马上执行,至少要过2分钟才执行。如果重启cron则马上执行。 3.crontab中的输出配置 crontab中经常配置运行脚本输出为:>/dev/null 2>&1,来避免crontab运行中有内容输出。 shell命令的结果可以通过 ‘>‘ 的形式来定义输出 /dev/null 代表空设备文件 > 代表重定向到哪里,例如:echo "123" > /home/123.txt 1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null" 2 表示stderr标准错误 & 表示等同于的意思,2>&1,表示2的输出重定向等同于1 重定向输出语句的含义: 1>/dev/null 首先表示标准输出重定向到空设备文件,就是不输出任何信息到终端,不显示任何信息。 2>&1 表示标准错误输出重定向等同于标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |