Crontab 未执行作业 Ubuntu 14.04

Crontab 未执行作业 Ubuntu 14.04

我正在尝试每 15 分钟运行一次 bash 脚本作为 cron 作业。

bash 脚本简单地调用 Java 程序。我在 crontab 中设置了每 15 分钟运行一次文件并保存了它,但它什么也没做?

crontab -e

*/15 * * * * /home/marshell/graphite_cronjobs/Run_Cron_Read_Send_CapacityData_To_Graphite.sh

运行_Cron_读取_发送_容量数据_到_Graphite.sh

java Cron_Read_Send_CapacityData_To_Graphite  >> Cron_Read_Send_CapacityData_To_Graphite.log

答案1

这里可能存在两个问题。首先,cron 在一个特殊的 shell 中运行作业,该 shell 不会读取您的个人 $PATH。如果java不在/usr/bin或中/bin,则 cron 将无法使用它。来自man 5 crontab

cron(8) 守护进程会自动设置几个环境变量。SHELL 设置为 /bin/sh,LOGNAME 和 HOME 则从 crontab 所有者的 /etc/passwd 行中设置。
PATH 设置为“/usr/bin:/bin”。 HOME、SHELL 和 PATH 可能会被 crontab 中的设置覆盖;LOGNAME 是运行该作业的用户,并且可能无法更改。

因此,请改用完整路径java。下一个问题是您的 bash 脚本在具有相对路径的文件上调用 java。它假定脚本将从与 java 文件相同的目录启动。同样,事实并非如此。因此,如果您希望脚本按 cron 的预期运行,请始终使用绝对路径:

/path/to/java /path/to/Cron_Read_Send_CapacityData_To_Graphite  >> /path/to/Cron_Read_Send_CapacityData_To_Graphite.log

$PATH或者,您可以在 crontab 本身中设置:

PATH=$PATH:/opt/bin

*/15 * * * * /home/marshell/graphite_cronjobs/Run_Cron_Read_Send_CapacityData_To_Graphite.sh

相关内容