# 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
# 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
7 回答
将所有输出从cron作业记录到/var/log/myjob.log
您可以使用
mail
发送电子邮件 . 大多数系统会通过电子邮件将未处理的cron
作业输出发送给root或相应的用户 .默认情况下,cron会记录到/ var / log / syslog,因此您可以使用以下命令查看与cron相关的条目:
https://askubuntu.com/questions/56683/where-is-the-cron-crontab-log
这是我的代码:
至少有三种不同类型的日志记录:
执行程序之前的日志记录,只记录cronjob TRIED以执行命令 . 那个位于/ var / log / syslog中,正如@Matthew Lock已经提到的那样 .
在程序尝试执行后记录错误,可以发送到电子邮件或文件,如@ Spliffster所述 . 我更喜欢登录到文件,因为有了电子邮件,那么你有一个新的问题来源,并检查电子邮件发送和接收是否完美 . 有时是,有时不是 . 例如,在一个简单的常见桌面计算机中,您对配置smtp不感兴趣,有时您更喜欢记录到文件:
我还会考虑检查/ ABSOLUTE_PATH_TO_LOG的权限,并从该用户的权限运行该命令 . 仅用于验证,同时测试它是否可能是潜在的问题来源 .
程序本身的记录,具有自己的错误处理和记录以进行跟踪 .
cronjobs存在一些常见问题:*要执行的二进制文件的ABSOLUTE PATH . 当你从shell运行它时,它可能会工作,但cron进程似乎使用另一个环境,因此如果你不使用绝对路径它并不总是找到二进制文件 . *二进制文件使用的库 . 它或多或少与前一点相同,但要确保,如果只是简单地输入命令的名称,就是指使用相同库的二进制文件,或者更好,检查您使用绝对路径引用的二进制文件与您直接使用控制台时引用的内容完全相同 . 可以使用locate命令找到二进制文件,例如:
确保您将引用的二进制文件与您在shell中调用的二进制文件完全相同,或者只是使用您计划放入cronjob的绝对路径在shell中再次测试 .
在Ubuntu上,您可以启用
cron.log
文件以仅包含CRON条目 .取消注释在
/etc/rsyslog.d/50-default.conf
文件中提及cron
的行:保存并关闭该文件,然后重新启动
rsyslog
服务:您现在可以在自己的文件中看到cron日志条目:
样本输出:
但是,您将看不到有关在
/etc/cron.daily
或/etc/cron.hourly
内实际运行的脚本的更多信息,除非这些脚本将输出定向到cron.log(或者可能是某些其他日志文件) .如果要验证crontab是否正在运行而不必在
cron.log
或syslog
中搜索它,请创建一个crontab,将输出重定向到您选择的日志文件 - 如下所示:采取的步骤:https://www.cyberciti.biz/faq/howto-create-cron-log-file-to-log-crontab-logs-in-ubuntu-linux/
如果你用sudo运行一些命令,它将不允许它 . Sudo需要一个tty .
cron
已经将其运行的每个作业的标准输出和标准错误发送给cron作业的所有者 .您可以使用
crontab
文件中的MAILTO=recipient
将电子邮件发送到其他帐户 .为此,您需要让邮件正常工作 . 发送到本地邮箱通常不是问题(事实上,很可能会发现你已经收到了一些邮箱),但是将它从包装盒中取出并进入互联网需要MTA(Postfix,Sendmail,你有什么)正确配置连接到世界 .