Cron作业未运行?


24

我有一个crontab文件,看起来像这样:

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

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

crontab -l 输出以下内容:

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


好的,我已经做到了。
Alex Bliskovsky

也许这是一个愚蠢的问题,但是之前发生在我身上,所以我还是要问。确保cron守护程序实际上正在运行!:P第二个猜测是权限,请确保它可由运行cronjob的用户执行。
Mattias Ahnberg

Answers:


21

在您的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服务reload,或重新启动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

3

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


2
要使文件可执行,您还可以运行chmod +x filename
Stefano Palazzo,

0

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

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

您也可以使用mail和中的syslog文件检查本地邮箱是否有/var/log/syslog错误。另请参阅此相关问题,为什么cronjobs可能不起作用


0

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

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

让我知道这是否适合您。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.