Ubuntu/Debian/CentOS 中如何查看 cron 日志?
查看 cron 日志:常见配置下 Ubuntu/Debian 在 /var/log/syslog 中 grep CRON,CentOS 在 /var/log/cron;实际以日志路由为准。本文介绍各系统的查看方法及如何让 cron 日志独立存放。
常见 rsyslog 配置中,Ubuntu/Debian 的 cron 记录可在 /var/log/syslog,CentOS/RHEL 常用 /var/log/cron;实际位置由日志服务和路由配置决定,也可能只在 journal 中。
Ubuntu / Debian
# 过滤 cron 相关记录
grep CRON /var/log/syslog
# 实时跟踪
tail -f /var/log/syslog | grep --line-buffered CRON
# 只看某个任务
grep "myjob.sh" /var/log/syslog
CentOS / RHEL
cat /var/log/cron
tail -f /var/log/cron
让 cron 日志独立存放(Ubuntu/Debian)
编辑 /etc/rsyslog.d/50-default.conf,取消注释:
cron.* /var/log/cron.log
重启 rsyslog 后 cron 日志单独写入 /var/log/cron.log:
sudo systemctl restart rsyslog
注意:cron 日志不包含脚本输出
这些日志只记录 cron 守护进程的事件(何时调度了哪个任务)。脚本自身的输出需要在 crontab 中重定向:
0 2 * * * /home/user/job.sh >> /home/user/myjob.log 2>&1
集中检索时,应把 cron 调度日志和已重定向的脚本输出分别配置采集。例如用观测云 DataKit读取两类文件后,按主机、任务名和执行时间对照:调度记录说明触发过,脚本结果才用于判断成功与失败。
常见问题(FAQ)
Q:systemd 系统的 journalctl 能看吗?
A:能:journalctl -u cron(Ubuntu)或 journalctl -u crond(CentOS)。
Q:日志里 (root) CMD (...) 是什么意思?
A:CRON 服务记录的执行事件,格式为 (用户) CMD (命令),表示某用户的 crontab 触发了一条命令。
Q:如何确认任务执行成功还是失败?
A:常见的 CMD 行只说明任务已触发;是否有结束或退出状态记录取决于 cron 实现和配置,不能统一认定没有。成败要看脚本输出(重定向到文件)或退出码——可以在脚本里显式 echo 成功/失败标记。