我想知道如何在每次执行时准确地看到cron作业正在做什么。日志文件位于哪里?或者我可以把输出发送到我的邮箱吗?我已经设置了电子邮件地址,当cron作业运行时发送日志,但我还没有收到任何东西。


当前回答

如果你用sudo运行一些命令,它将不允许。须藤需要洗漱。

其他回答

这是我的代码:

* * * * * your_script_fullpath >> your_log_path 2>&1

默认cron日志到/var/log/syslog,这样你就可以看到cron相关的条目:

grep CRON /var/log/syslog

https://askubuntu.com/questions/56683/where-is-the-cron-crontab-log

在Ubuntu上,你可以让CRON .log文件只包含CRON条目。

取消/etc/rsyslog.d/50-default.conf文件中提到cron的行注释:

#  Default rules for rsyslog.
#

#                       For more information see rsyslog.conf(5) and /etc/rsyslog.conf

#
# First some standard log files.  Log by facility.
#
auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog
#cron.*                          /var/log/cron.log

保存并关闭文件,然后重新启动rsyslog服务:

sudo systemctl restart rsyslog

你现在可以看到cron日志条目在它自己的文件中:

sudo tail -f /var/log/cron.log

示例输出:

Jul 18 07:05:01 machine-host-name CRON[13638]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)

但是,您不会看到关于/etc/cron中实际运行的脚本的更多信息Daily或/etc/cron.每小时一次,除非这些脚本将输出直接输出到cron.log(或者其他一些日志文件)。

如果你想验证crontab是否正在运行,而不需要在crontab .log或syslog中搜索它,创建一个crontab,将输出重定向到你选择的日志文件-类似于:

# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
30 2 * * 1 /usr/local/sbin/certbot-auto renew >> /var/log/le-renew.log 2>&1

步骤从:https://www.cyberciti.biz/faq/howto-create-cron-log-file-to-log-crontab-logs-in-ubuntu-linux/

如果你用sudo运行一些命令,它将不允许。须藤需要洗漱。

* * * * * myjob.sh >> /var/log/myjob.log 2>&1

是否将cron作业的所有输出记录到/var/log/myjob.log

你可以用mail发送电子邮件。大多数系统将通过电子邮件将未处理的cron作业输出发送给root或相应的用户。