我想验证我的 cron 作业是否正在执行以及在什么时间执行。我相信我的作业有日志sudo crontab -e
,但是在哪里呢?
我搜索了谷歌并找到了建议查看/var/log
(其中我没有看到名称中带有“cron”的任何内容)并编辑/etc/syslog.conf
我也没有的文件。
答案1
在默认安装中,cron 任务将记录到
/var/log/syslog
你可以通过运行以下命令查看日志文件中的 cron 作业
grep CRON /var/log/syslog
如果您没有重新配置任何内容,条目将会在那里。
答案2
您可以创建一个 cron.log 文件,仅包含系统日志中显示的 CRON 条目。请注意,如果您按照以下说明操作,CRON 作业仍会显示在系统日志中。
打开文件
/etc/rsyslog.d/50-default.conf
找到以以下内容开头的行:
#cron.*
取消注释该行,保存文件并重新启动 rsyslog:
sudo service rsyslog restart
您现在应该在这里看到一个 cron 日志文件:
/var/log/cron.log
Cron 活动现在将被记录到此文件中(除了 syslog)。
请注意,在 cron.log 中,您将看到 cron 在 /etc/cron.hourly、cron.daily 等中运行脚本时的条目 - 例如:
Apr 12 14:17:01 cd CRON[14368]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
但是,您将看不到有关在 /etc/cron.daily 或 /etc/cron.hourly 中实际运行的脚本的更多信息,除非这些脚本将输出直接发送到 cron.log(或者可能是其他日志文件)。
如果您想验证 crontab 是否正在运行而不必在 cron.log 或 syslog 中搜索它,请创建一个将输出重定向到您选择的日志文件的 crontab - 类似于:
01 14 * * * /home/joe/myscript >> /home/log/myscript.log 2>&1
这会将运行脚本可能产生的所有标准输出和错误重定向到指定的日志文件。
答案3
有时持续监控可能会很有用,在这种情况下:
tail -f /var/log/syslog | grep CRON
答案4
如果您已经systemd
在系统上安装,您可以使用该journalctl
命令显示 cron 作业日志。
例如,在我的 Ubuntu 17.10 上:
journalctl -u cron.service