可能的原因是cron作业的执行环境与当前shell环境存在差异,例如PATH环境变量的设置不同。解决方法是在cron作业中指定要使用的环境变量,或者将命令的完整路径写入cron作业中。
修改cron作业执行环境的方法:
在cron作业中加入环境变量的设置,例如:
# 每个周一至周五的早上 8 点执行
0 8 * * 1-5 bash /path/to/script.sh
修改为:
# 每个周一至周五的早上 8 点执行,并使用指定的环境变量
0 8 * * 1-5 /bin/bash -l -c 'export PATH="$PATH:/usr/local/sbin:/usr/local/bin"; /path/to/script.sh'
这样,cron作业就能使用与当前shell环境相同的环境变量,包括PATH。
指定命令的完整路径的方法:
在cron作业中使用完整路径的命令,例如:
# 每个月的 1 日凌晨执行
0 0 1 * * /usr/local/bin/command
需要注意的是,命令的路径在不同的系统和环境中可能有所不同,要根据实际情况进行修改。
参考资料: