我的系统日志充满了以下内容:
Oct 28 23:35:01 myhost CRON[17705]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Oct 28 23:45:01 myhost CRON[18392]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
还有一些
Oct 28 23:59:01 myhost CRON[19251]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 60 2)
现在,显然,这些来自 cron 作业,位于/etc/cron.d/sysstat
:
# Activity reports every 10 minutes everyday
5-55/10 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1
# Additional run at 23:59 to rotate the statistics file
59 23 * * * root command -v debian-sa1 > /dev/null && debian-sa1 60 2
我需要如此频繁地运行此操作吗?当我手动运行它时,它似乎没有做太多事情。我可以/应该关闭 cron 作业,或者卸载 sysstat 吗?
答案1
这些命令确实是 sysstat 包的一部分。它用于性能监控;具体来说,sar 是系统活动报告:
源自 Unix System V 的系统监视器命令,用于报告各种系统负载,包括 CPU 活动、内存/分页、中断、设备负载、网络和交换空间利用率。 Sar 使用 /proc 文件系统来收集信息
因此,运行此命令实际上不会做任何有助于系统健康或稳定性的事情,它只是收集统计数据。
考虑到这一点,您有三个选择:
sysstat
按照@wurtel 建议卸载。您表示您甚至无法看到收集的统计数据,因此显然您并没有真正使用此设施。这意味着您可能一开始就不需要这样的监控。将 cron 输出移至单独的文件中
/var/log/messages
,例如移至/var/log/cron
.如果您使用rsyslog
日志记录(您可能会认为这是 Devuan 上的默认设置),您需要做的是取消注释中用于此目的的行/etc/rsyslog.conf
:#cron.* /var/log/cron.log
只需删除开头的
#
;并cron
从 中删除/var/log/syslog
,即替换:*.=info;*.=notice;*.=warn;\ auth,authpriv.none;\ cron,daemon.none;\ mail,news.none -/var/log/messages
有了这个:
*.=info;*.=notice;*.=warn;\ auth,authpriv.none;\ <h1>cron,daemon.none;\</h1> daemon.none;\ mail,news.none -/var/log/messages
- 如果您不关心在没有错误的情况下查看 cron 作业日志记录,@binarym 建议将日志记录限制为错误或警告消息。对于
rsyslog
,这意味着替换它:
有了这个:*.=info;*.=notice;*.=warn;\ auth,authpriv.none;\ cron,daemon.none;\ mail,news.none -/var/log/messages
在默认情况下*.=info;*.=notice;*.=warn;\ auth,authpriv.none;\ daemon.none;\ mail,news.none -/var/log/messages *.=warn;*.=err\ cron -/var/log/messages
/etc/rsyslogd.conf
。 (不过,坦率地说,我不明白为什么.=err
一开始就不存在。
答案2
cron
通常记录到它自己的设施:LOG_CRON
。
因此,只需配置您的系统日志即可避免记录此功能,除非优先级大于或等于LOG_ERR
或LOG_WARN
。
答案3
从 Debian 11 开始,如果您使用系统,您应该能够/etc/cron.d/sysstat
在运行后删除 cron 作业文件 ( ):
dpkg-reconfigure sysstat
并选择“是”
这将启用一些 systemd 任务:
- 系统状态收集
- sysstat-摘要
这会做同样的事情。