用于监控网络、磁盘使用情况、正常运行时间、平均负载和内存的 Shell 脚本

linuxoperating systemopen source更新于 2026/2/2 22:37:17

在 Linux 环境中,跟踪系统资源(例如网络使用情况、磁盘使用情况、正常运行时间、平均负载和内存使用情况)至关重要。这些信息有助于系统管理员检测潜在问题并提升系统性能。然而,手动监控这些指标可能既耗时又繁琐。因此,本文将讨论如何使用 Shell 脚本监控这些系统资源。

什么是 Shell 脚本?

Shell 脚本是在命令行界面上运行并自动执行重复性任务的程序。它是一系列用脚本语言(例如 Bash)编写的命令,可以在 Linux 终端中执行。

创建 Shell 脚本

要创建 Shell 脚本,我们首先需要创建一个扩展名为 .sh 的文件。例如,让我们使用 nano 编辑器创建一个名为"sysmon.sh"的文件 -

nano sysmon.sh

这将打开 nano 编辑器,我们可以在其中编写 Shell 脚本。编写脚本后,我们可以通过按"Ctrl + X",然后按"Y",最后按"Enter"来保存并关闭编辑器。

下一步是使用以下命令更改脚本的权限,使其可执行 -

chmod +x sysmon.sh

现在我们的脚本已可执行,让我们继续监控系统资源。

监控网络使用情况

要监控网络使用情况,我们可以使用"iftop"命令行实用程序。此工具通过监控网络连接并显示每个连接的带宽使用情况来显示实时网络使用情况。要在脚本中使用 iftop,我们需要使用以下命令安装它 -

sudo apt-get install iftop

安装 iftop 后,我们可以在脚本中使用它来监控网络使用情况,命令如下 -

iftop -t -s 2

此命令每两秒实时显示一次网络使用情况,如下所示 -

22:46:25     0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
22:46:27     0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
22:46:29     0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
22:46:31     0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
22:46:33     0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

监控磁盘使用情况

要监控磁盘使用情况,我们可以使用"df"命令行实用程序。此工具按分区显示文件系统磁盘空间使用情况。要在脚本中使用"df"命令,我们可以使用以下命令 -

df -h

此命令以用户可读的格式显示磁盘使用情况,如下所示 -

Filesystem      Size  Used Avail Use% Mounted on
udev            3.9G     0  3.9G   0% /dev
tmpfs           798M  1.1M  797M   1% /run
/dev/sda1        93G  9.9G   78G  12% /
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/loop1       56M   56M     0 100% /snap/core18/2128
/dev/loop2       33M   33M     0 100% /snap/snapd/14788

监控正常运行时间

要监控系统正常运行时间,我们可以使用"uptime"命令行实用程序。此工具显示当前时间、系统正常运行时间、用户数量以及过去 1、5 和 15 分钟的系统平均负载。要在脚本中使用"uptime"命令,我们可以使用以下命令 -

uptime

此命令显示系统正常运行时间和平均负载,如下所示 -

22:56:16 up 15 days,  8:43,  1 user,  load average: 0.00, 0.01, 0.05

监控平均负载

要监控系统平均负载,我们可以使用"top"命令行实用程序。此工具显示实时系统资源使用情况,包括 CPU 使用率、内存使用率和系统平均负载。要在脚本中使用"top"命令,我们可以使用以下命令 -

top -bn1 | grep load | awk '{printf "%.2f
", $(NF-2)}'

此命令显示 1 分钟的平均负载,如下所示 -

0.00

监控 RAM 使用情况

要监控 RAM 使用情况,我们可以使用"free"命令行实用程序。此工具显示系统上的总内存、已用内存和可用内存。要在脚本中使用"free"命令,我们可以使用以下命令 -

free -m | awk 'NR==2{printf "%.2f%%
", $3*100/$2 }'

此命令显示已用内存百分比,如下所示 -

35.00%

将命令组合成脚本

现在我们有了监控网络使用情况、磁盘使用情况、正常运行时间、平均负载和内存使用情况的命令,我们可以将它们组合成一个 Shell 脚本。最终脚本如下所示 -

#!/bin/bash
echo "Network Usage:"
sudo iftop -t -s 2
echo "Disk Usage:"
df -h
echo "Uptime:"
uptime
echo "Load Average:"
top -bn1 | grep load | awk '{printf "%.2f
", $(NF-2)}' echo "RAM Usage:" free -m | awk 'NR==2{printf "%.2f%%
", $3*100/$2 }'

此脚本首先显示网络使用情况,然后显示磁盘使用情况、系统正常运行时间、平均负载和内存使用情况。要运行此脚本,我们需要导航到保存文件的目录,并使用以下命令执行它:

./sysmon.sh

这将运行脚本并在终端中显示系统资源指标。

此外,可以使用 cron 作业安排脚本定期自动运行。cron 作业是一种按指定间隔运行的计划任务,可用于自动执行重复性任务。要将脚本安排为每 10 分钟运行一次,我们可以在 crontab 文件中添加以下条目 -

*/10 * * * * /path/to/sysmon.sh

此条目将每 10 分钟运行一次脚本,并在终端中显示系统资源指标。我们还可以将输出重定向到文件进行进一步分析,或使用 mail 命令将其发送到电子邮件地址。

结论

监控系统资源对于确保 Linux 环境的平稳运行至关重要。在本文中,我们讨论了如何使用 Shell 脚本监控 Linux 中的网络使用情况、磁盘使用情况、正常运行时间、平均负载和内存使用情况。通过组合相关命令,我们可以自动化监控过程并节省系统管理员的时间。

此外,值得一提的是,此脚本可以进一步定制,以满足特定的监控需求。例如,可以修改网络使用情况,使其仅显示来自特定接口或 IP 地址的流量。同样,可以过滤磁盘使用情况,使其仅显示特定分区或目录。

总而言之,Shell 脚本是 Linux 环境中监控系统资源的强大工具。通过正确的命令组合,系统管理员可以自动化监控过程并节省时间。脚本可以进一步自定义,并使用 cron 作业安排自动运行,使其成为系统管理员不可或缺的工具。


相关文章


有用资源