我们sar
在 Ubuntu 服务器上工作,但在服务器上做了一些工作,现在它停止记录到当天的日志文件。
sar -b 5 5
Run Code Online (Sandbox Code Playgroud)
这说明还sar
活着,并且有监控数据,但是
ubuntu@testing:/var/log/sysstat$ sar
Run Code Online (Sandbox Code Playgroud)
输出:
Linux 5.4.0-1063-azure (server) 02/22/22 _x86_64_ (4 CPU)
10:22:05 LINUX RESTART (4 CPU)
10:22:46 LINUX RESTART (4 CPU)
10:24:25 LINUX RESTART (4 CPU)
16:34:04 LINUX RESTART (4 CPU)
Run Code Online (Sandbox Code Playgroud)
cron 和sysstat
配置没有改变。
*/1 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1
Run Code Online (Sandbox Code Playgroud)
为什么统计数据没有添加到日志中?
比较 2 个安装,一个是从 Debian 10 升级的 Debian 11,另一个是全新的 Debian 11,两者都使用 systemd:
\nsysstat-collect
并sysstat-summary
启用了因此,如果您使用systemd,您应该重新配置sysstat
它将通过 systemd 而不是通过 crontab 运行:
dpkg-reconfigure sysstat\n
Run Code Online (Sandbox Code Playgroud)\n选择“是”。
\n直接编辑/etc/default/sysstat
(就像我到目前为止所做的那样)是一个错误:它不会更新 systemd 文件。
请注意,您将看到/etc/default/sysstat
更新为ENABLED="true"
,但 cron 将不再运行(systemd 将按预期触发它)。
您可以使用以下命令检查一切是否正常:
\nsystemctl status sysstat-collect.timer\nsystemctl status sysstat-summary.timer\n
Run Code Online (Sandbox Code Playgroud)\n应该回复 \xc2\xabActive: active ( waiting)\xc2\xbb
\n小智 0
我遇到了同样的问题,在我的情况下(Debian 11),一种解决方案是在文件中更改debian-sa1
为,因为当系统出厂时启用时将退出。sa1
cron
debian-sa1
systemd
应用此 hack 后,cron
配置文件sysstat
将如下所示 ( /etc/cron.d/sysstat
):
...
*/1 * * * * root command -v sa1 > /dev/null && sa1 1 1
...
Run Code Online (Sandbox Code Playgroud)
编辑:
正如Yvan解释的那样,要sysstat
通过systemd
而不是运行cron
,我们可以手动启动sysstat-collect.timer
计时器sysstat-summary.timer
,以防它们处于非活动状态:
systemctl start sysstat sysstat-collect.timer sysstat-summary.timer
Run Code Online (Sandbox Code Playgroud)
并且还可以让它们在系统启动时自动启动:
systemctl enable sysstat sysstat-collect.timer sysstat-summary.timer
Run Code Online (Sandbox Code Playgroud)
最后,在解释了这些技巧之后,在这种情况下,也许最好的解决方案是重新配置sysstat
为运行systemd
而不是cron
,这在Yvan 的回答中进行了详细描述。