在 Ubuntu 18.04 上查看指定时间系统负载情况
在 Ubuntu 18.04 上查看昨晚 20 点左右的系统负载情况,通常我们需要依赖一些工具来分析和查看历史性能数据。以下是几种方法,可以帮助你获取所需的信息:
1. 使用 sar
(System Activity Reporter)
sar
是一个非常强大的系统性能监控工具,可以查看历史负载情况。首先,你需要确保 sysstat
包已安装,因为 sar
工具包含在这个包里。
安装 sysstat
包:
sudo apt update
sudo apt install sysstat
启用 sysstat
服务:
默认情况下,sysstat
可能没有启用收集数据,你需要启用该服务:
sudo systemctl enable sysstat
sudo systemctl start sysstat
查看负载数据:sar
默认每 10 分钟收集一次数据,数据会存储在 /var/log/sysstat/
目录下。你可以使用以下命令查看负载数据:
sar -u -f /var/log/sysstat/sa<day_of_month> -s <start_time> -e <end_time>
例如,如果你想查看昨天(假设是 7 月 22 日)晚上 20:00 到 20:30 的 CPU 使用情况:
sar -u -f /var/log/sysstat/sa22 -s 20:00:00 -e 20:30:00
其他常见的 sar
参数:
-
-u
:查看 CPU 使用情况。 -
-r
:查看内存使用情况。 -
-q
:查看队列长度(负载情况)。
2. 使用 uptime
和 w
如果你只关心系统的负载而不关心其他细节,可以使用 uptime
或 w
命令来查看系统的当前负载情况。虽然这些工具不提供历史数据,但可以用来查看当前的负载状态。
-
查看当前系统负载:
uptime
-
查看当前登录用户和负载:
w
这些工具展示的信息通常包括系统负载、用户数和最近活动。
3. 查看 /var/log/syslog
或 dmesg
syslog
文件和 dmesg
输出中有一些系统负载的间接信息。如果有异常情况(比如系统负载过高时),这些日志可能会记录相关的错误或警告信息。
-
查看
/var/log/syslog
:grep "load" /var/log/syslog
-
使用
dmesg
查看内核日志:dmesg | grep "load"
4. 使用 htop
或 top
(实时查看负载)
htop
和 top
工具可以让你实时查看系统负载情况,包括 CPU 使用率、内存、进程等信息。这些工具只会显示当前的负载,但对于实时监控有很大帮助。
-
安装
htop
(如果没有安装):sudo apt install htop
-
启动
htop
:htop
-
或者使用
top
(默认工具):top
5. 使用 atop
(适用于高级负载分析)
atop
是另一个非常强大的性能监控工具,可以提供更为详细的历史性能数据,类似于 sar
,但提供了更多的性能指标。
安装 atop
:
sudo apt install atop
查看历史负载:atop
会将每分钟的系统性能数据保存在 /var/log/atop/
目录中。你可以使用以下命令查看指定日期的数据:
atop -r /var/log/atop/atop_<date>.gz
例如,查看 7 月 22 日的负载数据:
atop -r /var/log/atop/atop_2025-07-22.gz
6. 使用 journalctl
查看系统日志
journalctl
是 systemd
的日志查看工具,它可以提供关于系统负载的详细日志信息,特别是在 systemd
日志中记录的服务崩溃、资源消耗等事件。
-
查看指定时间段的系统日志:
journalctl --since "2025-07-22 20:00:00" --until "2025-07-22 20:30:00"
-
如果你想查看所有负载相关的日志:
journalctl | grep "load"
从你的输出信息来看,sysstat
服务已经启用并正在运行,但 sar
无法找到历史数据文件。出现的错误 Cannot open /var/log/sysstat/sa23: No such file or directory
表示当前没有收集到 sa23
文件,这是因为 sysstat
收集的数据文件是按天生成的,而目前没有历史数据文件。
解决方案:
-
等待数据收集
sysstat
会每隔一段时间(默认每 10 分钟)收集一次数据并保存到/var/log/sysstat/
目录下的sa<day_of_month>
文件中。因为你的sysstat
服务刚刚启动,所以在这个月(23号)之前没有历史数据。如果你需要查看今天的历史数据,你必须等一段时间,直到它开始收集数据。你可以使用以下命令查看
/var/log/sysstat/
目录:ls /var/log/sysstat/
如果数据收集顺利,它将在该目录下生成名为
sa23
(23号)的文件。你可以稍后使用sar
查看数据:sar -u -f /var/log/sysstat/sa23
-
手动触发数据收集
你也可以手动触发sysstat
数据收集,但通常它是自动运行的。如果你急需当前负载数据并希望它立刻记录,可以使用以下命令手动触发sadc
(系统活动数据收集器):sudo sadc -S DISK 1 /var/log/sysstat/sa$(date +\%d)
这条命令会立即收集当前的数据,并将其存储为当天的
sa<day>
文件。随后,你就可以使用sar
来查看该数据。 -
实时监控(
sar
)
目前,你可以使用sar
的实时监控模式查看当前的 CPU 使用情况。你已经尝试了sar -u 1 5
来查看实时的 CPU 使用情况。此命令每秒钟输出一次系统负载数据。你也可以用以下命令来监控其它资源:
sar -r 1 5 # 查看内存使用情况 sar -q 1 5 # 查看负载队列和上下文切换情况
-
查看
sysstat
配置
你可以查看/etc/default/sysstat
文件,确保它设置为正确的启用模式:sudo nano /etc/default/sysstat
确保以下内容:
ENABLED="true"
-
重新启动
sysstat
服务
如果你在配置中做了任何更改,或者数据收集似乎没有正常工作,你可以尝试重新启动sysstat
服务:sudo systemctl restart sysstat
结论
-
当前
sysstat
数据收集还没有历史数据,因为数据收集刚启用。你可以等一段时间,等待sar
收集到新的数据文件。 -
如果急需查看负载情况,使用
sar -u 1 5
来查看实时数据。 -
确保
sysstat
服务正确配置并已启动。
等待一段时间后,你应该能够查看到数据文件并使用 sar
查看历史性能数据。