Cron Job 没有运行?

Cron Job 没有运行?

我有一个如下所示的 crontab 文件:

* * * * * /home/abliskovs/update/update.sh

但是,当我检查系统日志以查找该作业已运行的证据时,没有任何迹象表明它曾经运行过。我如何检查它是否正在运行?

crontab -l输出以下内容:

* * * * * /home/abliskovs/update/update.sh

答案1

在 crontab 条目末尾添加 >>/tmp/testlog.log(将输出重定向到您可以调查或检查其是否正在运行的文件,此外 2>&1 将包含来自错误控制台的输出)

例子

0 * * * * /home/abliskovs/update/update.sh 2>&1 /tmp/testlog.log

另请确保以下事项:

  • 以正确的方式添加 cronjobs。如果您在自己的帐户中使用了 crontab -e,脚本将以您的用户身份运行(因此 crontab 条目少了一个字段 - 运行它的用户,这是众所周知的)。如果您只是将上面的代码复制到 /etc/cron.d,它会失败,因为您没有指定用户(或者说找不到名为“bash”的用户)。
  • 确保脚本文件是可执行的,否则将不会执行。
  • 重新加载 cron 作业sudo 服务重新加载或重启 cron 服务sudo /etc/init.d/cron restart

如何使文件可执行?

使文件可执行的几种方法

chmod +x /home/abliskovs/update/update.sh 

chmod -R 0755 /home/abliskovs/update/update.sh

chmod a+x /home/abliskovs/update/update.sh

答案2

确保脚本文件是可执行的{chmod 755},否则将不会执行它

答案3

shell 脚本update.sh可能包含错误,例如由于找不到命令而无法执行某些命令。在这种情况下,将命令路径添加到 PATH 变量中或直接将其添加到命令前面可能会有所帮助。指定 MAILTO 电子邮件地址也有帮助,执行 Cronjobs 产生的电子邮件将发送到此地址

PATH=/path/to/your/command:/another/important/path
MAILTO=my_name@my_domain 

您还可以使用本地邮箱mail和系统日志文件检查/var/log/syslog错误。另请参阅此相关问题,为什么cronjobs 可能无法工作

答案4

我遇到过同样的问题,原因是 crontab 没有运行,因为它没有权限。我已更改文件并将其放入 /tmpt/output.log

*/5 * * * * /usr/bin/php /home/ubuntu/app/artisan cmd:process-order > /tmp/queue.output

请让我知道这是否对你有用。

相关内容