在 Linux 系统中,定时任务(通常由 cron
服务管理)的日志查看方法取决于系统使用的日志服务(如 syslog
、rsyslog
或 journald
)。以下是详细的查看方法:
/var/log/cron
或 /var/log/syslog
bash
sudo cat /var/log/cron
bash
sudo grep cron /var/log/syslog
journalctl
(Systemd 系统)如果系统使用 systemd
的日志服务:
sudo journalctl -u cron.service --since "today" # 查看当天日志
sudo journalctl -u cron.service -f # 实时跟踪日志
默认情况下,用户级 cron 任务的输出会通过邮件发送给用户。如果未配置邮件,可以通过以下方式查看:
sudo cat /var/mail/<用户名> # 例如 /var/mail/root
或使用邮件客户端:
mail -u root
在 crontab 中显式重定向输出(推荐):
* * * * * /path/to/script.sh >> /path/to/logfile.log 2>&1
然后直接查看日志文件:
cat /path/to/logfile.log
如果日志未生成,可能需要配置 rsyslog
:
sudo vim /etc/rsyslog.d/50-default.conf
取消注释或添加以下行:
cron.* /var/log/cron.log
sudo systemctl restart rsyslog
sudo service cron restart
之后日志将记录到 /var/log/cron.log
。
May 25 10:00:01 server CRON[1234]: (root) CMD (/usr/bin/backup.sh)
May 25 10:00:01 server CRON[1234]: (root) CMD (/invalid/path.sh)
May 25 10:00:01 server CRON[1234]: sendmail: fatal: parameter inet_interfaces: no local interface found
rsyslog
或 syslog-ng
,并确认 cron
服务正在运行:
bash
sudo systemctl status cron
sudo
查看日志,或将自己加入 adm
组:
bash
sudo usermod -aG adm $USER
通过以上方法,你可以全面监控和分析 Linux 定时任务的执行情况。如果需要更详细的调试,可以在 crontab 中临时添加 set -x
或在脚本中增加 echo
语句输出中间状态。