linux中cron默认不记录详细日志,需启用rsyslog并配置cron.* /var/log/cron.log,重启服务后通过logger测试验证;注意检查rsyslog/cron服务状态、用户级crontab限制及云镜像日志屏蔽问题。

Linux中cron默认不记录详细执行日志,需要手动开启系统级日志功能才能查看任务是否运行、何时运行、有无报错。
确认rsyslog服务是否启用
Ubuntu/Debian等系统默认可能禁用cron日志;CentOS/RHEL 7+ 默认使用rsyslog,但cron日志常被关闭。先检查rsyslog是否运行:
- systemctl status rsyslog —— 确保状态为 active (running)
- 若未启动,执行 sudo systemctl enable --now rsyslog
启用cron日志输出(修改rsyslog配置)
编辑rsyslog配置文件,放开cron日志通道:
- 打开 /etc/rsyslog.conf 或 /etc/rsyslog.d/50-default.conf(Ubuntu)
- 找到类似 #cron.* 的行,去掉开头的 # 号,改为:
cron.* /var/log/cron.log - 保存后重启服务:sudo systemctl restart rsyslog
验证cron日志是否生成
添加一个测试任务,观察日志是否写入:
- 运行 crontab -e,添加一行:
* * * * * logger "cron-test-$(date +\%s)" - 等待1分钟,执行:
sudo tail -n 5 /var/log/cron.log - 应看到类似 CRON[12345]: (user) CMD (logger "cron-test-1712345678") 的记录
补充:排查常见无日志原因
即使配置正确仍看不到日志,可逐项检查:
- 用户级crontab(crontab -e)任务不会触发系统cron日志,除非该任务调用了系统命令或重定向了输出
- 确保cron守护进程本身在运行:systemctl status cron(Debian/Ubuntu)或 systemctl status crond(RHEL/CentOS)
- 某些云服务器镜像(如部分阿里云/腾讯云Ubuntu镜像)默认屏蔽cron日志,需手动开启且确认磁盘空间充足(df -h /var/log)










