我正在寻找更好的方式来loggingcronjobs。 大多数cronjob往往会垃圾邮件或控制台,被忽略,或创build另一个日志文件。
在这种情况下,我有一个Nagios NSCA脚本,它将数据发送到中央Nagios服务器。 这个send_nsca脚本还会向STDOUT打印单个状态行,表示成功或失败。
0 * * * * root /usr/local/nagios/sbin/nsca_check_disk
这会将以下消息通过电子邮件发送给root @ localhost,然后将其转发给我的系统pipe理员小组。 垃圾邮件。
转发nsca_check_disk:1个数据包成功发送到主机。
我正在寻找一种logging方法:
在写这个问题的过程中,我自己回答。 所以我会回答自己“ 危险的风格 ”。 这扩大了丹尼斯·威廉姆森提供的答案。
下面将把任何Cron输出发送到/usr/bin/logger (包括使用2>&1转换为标准输出的stderr),该输出将发送到系统日志,标记为nsca_check_disk 。 系统日志从那里处理它。 由于这些系统(CentOS和FreeBSD)已经内置了日志轮转机制,所以我不需要担心像/ var/log/mycustom.log这样的var/log/mycustom.log填满磁盘。
*/5 * * * * root /usr/local/nagios/sbin/nsca_check_disk 2>&1 | /usr/bin/logger -t nsca_check_disk
/ var / log / messages现在有一个额外的消息说:
Apr 29, 17:40:00 192.168.6.19 nsca_check_disk: 1 data packet(s) sent to host successfully.
我喜欢/ usr / bin / logger,因为它适用于现有的syslogconfiguration和基础架构,并且包含在大多数Unix发行版中。 大多数* nix发行版已经做了日志轮转并且做得很好。
通过logging器输出输出。
0 * * * * root /usr/local/nagios/sbin/nsca_check_disk | logger -p local0.notice
编辑:你的更新看起来像正确的路要走。
您也可以使用选项-s (或在Busybox中的-S )运行crond ,以便将输出发送到syslog 。