当前位置:首页 > 服务器技术 > 正文

Linux Shell循环监控(手把手教你用Shell脚本实现系统自动监控)

在日常的 Linux 系统管理中,我们经常需要持续监控某些系统指标,比如 CPU 使用率、内存占用、磁盘空间或某个服务是否正常运行。这时候,使用 Linux Shell 循环监控 就是一个非常实用且高效的方法。

本文将从零开始,带你一步步编写一个简单的 Shell 脚本来实现循环监控功能,即使你是刚接触 Linux 的小白,也能轻松上手!

Linux Shell循环监控(手把手教你用Shell脚本实现系统自动监控) Shell循环监控 Shell脚本监控 系统资源监控 Linux自动化脚本 第1张

什么是 Shell 循环监控?

Shell 循环监控 是指利用 Shell 脚本中的循环结构(如 whilefor 循环),定期执行某些命令或检查某些条件,并根据结果做出响应(例如记录日志、发送通知等)。这种技术广泛应用于 系统资源监控服务状态检测 场景。

准备工作

确保你的 Linux 系统已安装 Bash(大多数发行版默认已安装),并打开终端。你可以通过以下命令确认:

bash --version

第一个循环监控脚本:监控磁盘使用率

我们来写一个脚本,每 5 秒检查一次根分区(/)的磁盘使用率,如果超过 80%,就打印警告信息。

#!/bin/bash# 设置监控阈值(80%)THRESHOLD=80# 无限循环while truedo    # 获取根分区的使用百分比(去掉 % 符号)    USAGE=$(df / | awk 'NR==2 {print $5}' | sed 's/%//')        echo "当前磁盘使用率: ${USAGE}%"        # 判断是否超过阈值    if [ $USAGE -gt $THRESHOLD ]; then        echo "[警告] 磁盘使用率已超过 ${THRESHOLD}%!"        # 这里可以添加发送邮件、写日志等操作    fi        # 每隔5秒检查一次    sleep 5done

将上述代码保存为 disk_monitor.sh,然后赋予执行权限:

chmod +x disk_monitor.sh

运行脚本:

./disk_monitor.sh

你会看到终端每隔 5 秒输出一次当前磁盘使用情况。当使用率过高时,会显示警告信息。

进阶技巧:监控服务是否运行

除了资源监控,我们还可以监控某个服务(如 nginx)是否在运行。下面是一个简单示例:

#!/bin/bashSERVICE="nginx"while truedo    if systemctl is-active --quiet $SERVICE; then        echo "[$(date)] $SERVICE 正在运行"    else        echo "[$(date)] [严重] $SERVICE 已停止!"        # 可在此处添加重启命令:systemctl restart $SERVICE    fi    sleep 10done

这个脚本每 10 秒检查一次 nginx 服务状态,并记录时间戳。你可以根据实际需求替换服务名称。

小贴士与最佳实践

  • 避免无限循环占用过多 CPU:务必使用 sleep 控制检查频率。
  • 日志记录:建议将输出重定向到日志文件,便于后续分析:
    ./disk_monitor.sh >> /var/log/monitor.log 2>&1
  • 后台运行:使用 nohupscreen 让脚本在后台持续运行。
  • 结合 Linux自动化脚本 技术,可实现更复杂的运维任务。

总结

通过本文,你已经学会了如何使用 Shell脚本监控 系统关键指标。无论是磁盘、内存还是服务状态,只要结合循环和条件判断,就能构建出简单而强大的监控工具。这些技能是每个 Linux 用户迈向自动化运维的重要一步。

赶快动手试试吧!你也可以将这些脚本加入 crontab 或配合其他工具(如 Prometheus、Zabbix)打造更专业的监控体系。

关键词提示:本文涵盖 Linux Shell循环监控Shell脚本监控系统资源监控Linux自动化脚本 四大核心概念。