use*_*321 40 debian syslog cron
我有一个需要每分钟执行一次的脚本。问题是 cron/var/log/syslog
每次执行时都会记录。我最终看到这样的事情一遍又一遍地重复/var/log/syslog
:
Jun 25 00:56:01 myhostname /USR/SBIN/CRON[1144]: (root) CMD (php /path/to/script.php > /dev/null)
Run Code Online (Sandbox Code Playgroud)
我正在使用 Debian。
我的问题是:有什么办法可以告诉 cron 不要每次都将这些信息写入 syslog?
Dav*_*ney 27
您可以将 cron 的输出发送到单独的日志工具,将以下内容添加到您的/etc/syslog.conf
文件中:
# Log cron stuff
cron.* /var/log/cron
Run Code Online (Sandbox Code Playgroud)
记得添加/var/log/cron
到你的/etc/logrotate.d/syslog
以确保它被旋转,例如
# /etc/logrotate.d/syslog
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
Run Code Online (Sandbox Code Playgroud)
use*_*321 17
好的,
我的问题的解决方案是:
改变
*.*;auth,authpriv.none -/var/log/syslog
Run Code Online (Sandbox Code Playgroud)
到
*.*;cron,auth,authpriv.none -/var/log/syslog
Run Code Online (Sandbox Code Playgroud)
在/etc/syslog.conf
然后重新启动系统日志
我也/var/log/cron.log
按照 Dave Cheney 的建议将 cron 发送给了它,并在其上进行了 logrotate。我对 Daves 建议的修复最适合我的情况,因为:
/var/log/syslog
不会被 cron 消息弄得乱七八糟/var/log/cron.log
不会变得太大。dfc*_*dfc 15
更改 /etc/default/cron
# Or, to log standard messages, plus jobs with exit status != 0:
# EXTRA_OPTS='-L 5'
#
# For quick reference, the currently available log levels are:
# 0 no logging (errors are logged regardless)
# 1 log start of jobs
# 2 log end of jobs
# 4 log jobs with exit status != 0
# 8 log the process identifier of child process (in all logs)
#
EXTRA_OPTS="-L 0"
Run Code Online (Sandbox Code Playgroud)
默认情况下 EXTRA_OPTS 行是“”
小智 5
在 Ubuntu 14.04.5(可能还有其他地方)中有 rsyslogd 而不是 syslogd。TranslucentCloud 用 Debian Jessie 暗示了这一点,但相同的解决方案(但更改 rsyslog.conf 而不是 syslogd.conf)在 Ubuntu 中似乎不起作用。
看来 /etc/rsyslog.d/50-default.conf 中设置的值实际上会优先于 /etc/rsyslog.conf 中设置的内容,所以最好在那里进行更改,然后重新启动 rsyslog 和 cron。否则,您最终仍将使用 cron 日志记录到 syslog 的默认行为,以及cron 日志记录到 cronlog(但不是唯一的)。
我的 /etc/rsyslog.d/50-default.conf 中的前几行:
*.*;cron,auth,authpriv.none -/var/log/syslog
cron.* /var/log/cron.log
Run Code Online (Sandbox Code Playgroud)
瞧!