我的 crontab 日志文件在哪里?

我的 crontab 日志文件在哪里?

/var/log/cron/var/log/cron.log在我的 Debian 7 上不行。我的 crontab 日志文件在哪里?

ls /var/log/cron*
ls: cannot access /var/log/cron*: No such file or directory

答案1

我认为debian cron写入日志/var/log/syslog
如果您的系统依赖于rsyslog或者syslogd您可以检查并取消注释 in/etc/rsyslog.conf/etc/syslog.conffor 行:

# cron.* /var/log/cron.log

然后重新启动服务。

systemd例如,如果您的系统依赖于您可以使用以下命令进行检查:

journalctl _COMM=cron

或者

journalctl _COMM=cron --since="date" --until="date"

对于日期格式,您可以检查journalctl

答案2

由于它没有标记为 debian 并且也出现在 fedora 搜索中,因此以下是如何检查最近的(基于 systemd 的)fedora:

sudo systemctl status crond

典型输出

● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2019-09-29 16:09:21 CEST; 47min ago
 Main PID: 1167 (crond)
    Tasks: 1
   Memory: 2.8M
      CPU: 948ms
   CGroup: /system.slice/crond.service
           └─1167 /usr/sbin/crond -n

Sep 29 16:09:21 ncelrnd0216 systemd[1]: Started Command Scheduler.
Sep 29 16:09:21 ncelrnd0216 crond[1167]: (CRON) STARTUP (1.5.4)
Sep 29 16:09:21 ncelrnd0216 crond[1167]: (CRON) INFO (Syslog will be used instead of sendmail.)
Sep 29 16:09:21 ncelrnd0216 crond[1167]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 31% if used.)
Sep 29 16:09:21 ncelrnd0216 crond[1167]: (CRON) INFO (running with inotify support)

all日志

journalctl --unit crond -n all

答案3

默认情况下,作业的输出crontab将发送到所属用户的本地电子邮件地址。例如:on hostcrontab的输出将发送到.系统使用其默认邮件程序来完成任务。aUserwww.aDomain.com[email protected]

MAILTO您可以通过在 crontab 文件中添加语句来将此输出转移到备用电子邮件地址。例如:

# Mail any output to [email protected], no matter whose crontab this is
[email protected]
# Run the following command ten minutes after midnight, every day
10 0 * * *       $HOME/bin/aJob.sh 

使用外部电子邮件地址接收 crontab 日志时要小心。频繁发送的消息可能会被垃圾邮件过滤器捕获。然后您必须将消息标记为不是垃圾邮件适用于 Yahoo、HotMail 或 Gmail 等服务。

另一种解决方案是将 crontab 命令的输出重定向到您选择的文件。在下面的示例中,stdoutstderr输出发送到/tmp/aJob.log。此方法消除了发送电子邮件的可能性。

# Run the following command ten minutes after midnight, every day
10 0 * * *       $HOME/bin/aJob.sh >> /tmp/aJob.log 2>&1

另一种选择是将stderr日志发送到电子邮件并将stdout日志发送到文件。在这种情况下,当您的crontab命令生成意外错误消息时,您会收到电子邮件提醒。与前面示例的区别在于,2>&1删除了该示例以允许stderr输出发送到控制台,从而发送到电子邮件。

# Mail any output to [email protected], no matter whose crontab this is
[email protected]    
# Run the following command ten minutes after midnight, every day
10 0 * * *       $HOME/bin/aJob.sh >> /tmp/aJob.log

阅读更多定时任务表定时任务命令

答案4

2020 年:谷歌为类似的事情邀请了我。

对于使用 systemd 的发行版,没有 more/var/log/messages/var/log/cron.

使用 systemd,journald 守护进程处理日志记录。

要查看 cron 是否正在运行您的脚本并跟踪日志,请使用;

journalctl -u cron.service -f

相关内容