Ric*_*rri 125
正如其他人所指出的,cron将通过电子邮件将其运行的任何程序的输出(如果有任何输出)发送给您。所以,如果你没有得到任何输出,基本上有三种可能:
crond 甚至无法启动 shell 来运行程序或发送电子邮件crond 邮寄输出时遇到问题,或者邮件丢失。情况 1. 不太可能,但应该在 cron 日志中写入一些内容。Cron 有自己保留的 syslog 工具,因此您应该查看/etc/syslog.conf(或发行版中的等效文件)以查看发送工具消息的cron位置。热门目的地包括/var/log/cron,/var/log/messages和/var/log/syslog。
在第 2 种情况下,您应该检查邮件程序守护程序日志:来自 Cron 守护程序的消息通常显示为 from root@yourhost。您可以使用MAILTO=...crontab 文件中的一行来让 cron 将电子邮件发送到特定地址,这样可以更轻松地 grep 邮件程序守护程序日志。例如:
MAILTO=my.offsite.email@example.org
00 15 * * * echo "Just testing if crond sends email"
Run Code Online (Sandbox Code Playgroud)
在第 3 种情况下,您可以通过附加另一个您可以轻松检查其效果的命令来测试程序是否实际运行:例如,
00 15 * * * /a/command; touch /tmp/a_command_has_run
Run Code Online (Sandbox Code Playgroud)
因此您可以crond通过查看/tmp/a_command_has_run.
cod*_*ead 69
您始终可以将作业输出显式发送到日志文件:
0 8 * * * /usr/local/bin/myjob > /var/log/myjob.log 2>&1
Run Code Online (Sandbox Code Playgroud)
请记住,这将取代之前提到的邮件行为,因为 crond 本身不会收到作业的任何输出。如果您想保持这种行为,您应该查看 tee(1)。
Ste*_*ski 49
如果您没有看到邮件,那么您可能是在向 root@yourcompany 发送垃圾邮件,其中包含错误,这对于使用该帐户进行监控的人来说可能非常烦人。尝试将输出发送到 Syslog:
*/5 * * * * yourcronjob 2>&1 | /usr/bin/logger -t yourtag
Run Code Online (Sandbox Code Playgroud)
然后,等待 cronjob 运行并在 /var/log/messages(或某些系统上的 /var/log/user.log)中查找错误。
这对于只有 1-2 行长的错误消息非常有用,例如“yourcronjob: command not found”。它还利用您现有的系统日志基础设施(Logrotation、中央系统日志、Splunk 等)。它还可以将垃圾邮件减少到 root。
如果您的 cronjob 生成数百行输出,这可能不是一个好的解决方案。
War*_*ung 11
crond当作业无法运行或作业返回非零退出代码时,您应该收到电子邮件。尝试输入:
$ mailx
Run Code Online (Sandbox Code Playgroud)
在命令提示符下。
mailx(1)是大多数类 Unix 系统上的基本邮件阅读程序。按照现代标准,它非常原始,但您几乎可以指望它始终可用。其他更好的邮件代理可能是可用的,但是它们太多了,您永远不知道在您碰巧使用的随机机器上安装了哪个。
请注意,除非您已将系统配置为 Internet 电子邮件服务器,否则此邮件子系统仅在机器内使用。您可以在机器上向其他用户发送和接收电子邮件,但您可能无法向世界发送电子邮件,并且来自外部世界的电子邮件肯定无法到达您的机器。
默认的 cron 配置将向您发送一封包含程序输出的邮件。如果失败,您可以尝试将失败的程序包装在一个 shell 脚本中,以确保程序不会失败,并且您可以进一步记录输出。
这是某些 cron 实现的可配置设置。
Cron 将基本信息记录到/var/log/messages,但将任何程序输出邮寄给调用用户。
| 归档时间: |
|
| 查看次数: |
473604 次 |
| 最近记录: |