我有一个如下所示的 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
请让我知道这是否对你有用。