news 2026/4/18 9:39:32

请编写一个 Shell 脚本监控系统的 CPU 使用率(中等)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
请编写一个 Shell 脚本监控系统的 CPU 使用率(中等)

👨‍⚕️主页: gis分享者
👨‍⚕️感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅!
👨‍⚕️收录于专栏:Shell 面试

文章目录

  • 一、🍀前言
    • 1.1 ☘️示例脚本
    • 1.2 ☘️示例二-定期检查 CPU 使用率,并在使用率超过某个阈值时发送警报。
    • 1.3 ☘️扩展知识

一、🍀前言

题目是编写一个 Shell 脚本来监控系统的 CPU 使用率。这里我给出一个简单但有效的脚本来实现这一目标。我们会使用 mpstat 命令来获取 CPU 使用率,它是 sysstat 软件包的一部分。如果它在你的系统中尚未安装,可以使用 sudo apt-get install sysstat 进行安装。

1.1 ☘️示例脚本

#!/bin/bash# 获取当前时间CURRENT_TIME=$(date"+%Y-%m-%d %H:%M:%S")# 获取CPU使用率CPU_USAGE=$(mpstat 1 1|awk'/Average:/ {print 100 - $12"%"}')echo"$CURRENT_TIME- CPU Usage:$CPU_USAGE"

解释:
#!/bin/bash:指定使用 bash 解释器执行脚本。
date 命令用于获取当前时间。
mpstat 1 1 命令会每秒采样一次并只显示一个结果。
awk 命令用于提取平均 CPU 使用率(空闲时间用 $12 表示,因此 100 - $12 不会)。
将当前时间和 CPU 使用率输出。

如果你需要连续监控,可以使用一个循环:

#!/bin/bashwhiletrue;doCURRENT_TIME=$(date"+%Y-%m-%d %H:%M:%S")CPU_USAGE=$(mpstat 1 1|awk'/Average:/ {print 100 - $12"%"}')echo"$CURRENT_TIME- CPU Usage:$CPU_USAGE"sleep5 done

1.2 ☘️示例二-定期检查 CPU 使用率,并在使用率超过某个阈值时发送警报。

以下是一个简单的 Shell 脚本,用于监控系统的 CPU 使用率。这个脚本会定期检查 CPU 使用率,并在使用率超过某个阈值时发送警报。

#!/bin/bash# 定义 CPU 使用率的阈值THRESHOLD=80# 定义日志文件路径LOG_FILE="/var/log/cpu_usage.log"# 定义警报邮件地址ALERT_EMAIL="admin@example.com"# 获取当前的 CPU 使用率get_cpu_usage(){cpu_usage=$(top-bn1|grep"Cpu(s)"|sed"s/.*, *\([0-9.]*\)%* id.*/\1/"|awk'{print 100 - $1}')echo"$cpu_usage"}# 记录 CPU 使用率到日志文件log_cpu_usage(){current_time=$(date"+%Y-%m-%d %H:%M:%S")echo"$current_time- CPU Usage:$1%">>$LOG_FILE}# 检查 CPU 使用率是否超过阈值check_cpu_usage(){cpu_usage=$(get_cpu_usage)if(($(echo"$cpu_usage>$THRESHOLD"|bc-l)));then log_cpu_usage$cpu_usagesend_alert$cpu_usagefi}# 发送警报邮件send_alert(){current_time=$(date"+%Y-%m-%d %H:%M:%S")subject="CPU Usage Alert on$(hostname)"message="High CPU usage detected on$(hostname)at$current_time\nCPU Usage:$1%"echo-e"$message"|mail-s"$subject"$ALERT_EMAIL}# 主循环,每 5 分钟检查一次 CPU 使用率whiletrue;docheck_cpu_usagesleep300 done

脚本解释:

  1. 定义变量:

    THRESHOLD:设置 CPU 使用率的阈值,单位为百分比。
    LOG_FILE:定义日志文件的路径,用于记录 CPU 使用率。
    ALERT_EMAIL:定义接收警报邮件的地址。

  2. 获取 CPU 使用率:

    get_cpu_usage 函数使用 top 命令获取当前的 CPU 使用率,并通过一系列命令处理输出,最终计算出 CPU 使用率。

  3. 记录 CPU 使用率:

    log_cpu_usage 函数将当前时间及 CPU 使用率记录到日志文件中。

  4. 检查 CPU 使用率:

    check_cpu_usage 函数调用 get_cpu_usage 获取 CPU 使用率,并检查是否超过阈值。如果超过阈值,则调用 log_cpu_usage 记录日志,并调用 send_alert 发送警报邮件。

  5. 发送警报邮件:

    send_alert 函数构建警报邮件的内容,并使用 mail 命令发送邮件。

  6. 主循环:

    脚本进入一个无限循环,每 5 分钟(300 秒)调用一次 check_cpu_usage 函数。

运行脚本:
将上述脚本保存到一个文件中,例如 monitor_cpu.sh。
赋予脚本执行权限:

chmod+x monitor_cpu.sh# 运行脚本./monitor_cpu.sh# 为了确保脚本在后台持续运行,可以使用 nohup 命令:nohup./monitor_cpu.sh &

1.3 ☘️扩展知识

当然,监控系统 CPU 使用率只是运维工作的一部分。为了让监控更全面、系统化,通常可以结合其他方法和工具:

1)日志记录:你可以将监控数据写入日志文件,以便后续分析。例如,上述脚本可以稍作修改,将输出重定向到一个日志文件:

echo"$CURRENT_TIME- CPU Usage:$CPU_USAGE">> cpu_usage.log

2)图形化监控:使用监控工具如Prometheus、Grafana等,可以将数据进行可视化展示。结合 Prometheus 的 Node Exporter 可以系统化地监控包括 CPU 使用率在内的多种系统资源。

3)报警机制:如果 CPU 使用率超过某个阈值,可以发送警告邮件或短信。可以使用 mail 命令或集成一些第三方的通知服务,如Twilio、Slack等。例如:

THRESHOLD=80if[$(echo"$CPU_USAGE>$THRESHOLD"|bc)-eq1];thenecho"CPU Usage is above$THRESHOLD%! Current usage:$CPU_USAGE"|mail-s"CPU Usage Alert"your-email@example.com fi

4)其它系统资源监控:除了 CPU 使用率,还可以监控内存使用率、磁盘 I/O 等等。例如使用 free -m 监控内存,使用 df -h 监控磁盘空间。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 3:27:16

Kotaemon意图识别准确率优化技巧

Kotaemon意图识别准确率优化技巧 在智能客服、企业知识助手和自动化服务系统中,一个常见的痛点是:用户明明说的是“怎么查话费”,系统却理解成“办理套餐变更”。这种误判不仅影响用户体验,更可能引发后续的错误操作——比如调用了…

作者头像 李华
网站建设 2026/4/18 5:36:52

Kotaemon框架的国际化支持现状与改进方向

Kotaemon框架的国际化支持现状与改进方向 在人工智能驱动下的智能对话系统正以前所未有的速度渗透进全球市场。从跨国企业的客服平台到出海应用的虚拟助手,用户不再满足于“能用”的AI,而是期待一个懂语言、知文化、合场景的本地化智能体。Kotaemon作为一…

作者头像 李华
网站建设 2026/4/11 7:37:34

是个公司都在用AI Agent,但大家真的用明白了吗??| MEET2026圆桌论坛

编辑部 整理自 MEET2026量子位 | 公众号 QbitAI“每个人每天使用最高频的三个APP中有两个是Agent时,才意味着AI Agent进入新发展阶段。”“一个好Agent的衡量指标,包括可控性、可解释性以及持续稳定执行任务的能力。”“多数Agent存在负毛利问题&#xf…

作者头像 李华
网站建设 2026/4/18 5:43:40

1、macOS Mojave 系统定制指南

macOS Mojave 系统定制指南 1. macOS Mojave 新特性 macOS Mojave(版本 10.14)是苹果多年来对 Mac 操作系统的重大更新,带来了诸多新特性: - 真暗黑模式 :macOS High Sierra 仅能对菜单栏和 Dock 栏进行有限的暗黑处理,而 Mojave 则全面支持暗黑模式,涵盖 Finder、…

作者头像 李华
网站建设 2026/4/17 20:35:12

6、macOS 系统 Dock 栏的个性化设置指南

macOS 系统 Dock 栏的个性化设置指南 1. Dock 栏简介 Dock 栏是 macOS 桌面最具标志性和辨识度的功能之一,也是系统中最具可定制性的特性。它以应用程序和文件夹图标条的形式出现在桌面底部,兼具应用启动器和应用切换器的双重功能,通过轻点触控板或鼠标,就能快速启动应用…

作者头像 李华
网站建设 2026/4/18 7:44:05

27、深入探索Windows 8:集成安装光盘制作与远程协助使用指南

深入探索Windows 8:集成安装光盘制作与远程协助使用指南 1. 创建集成服务包的Windows 8安装DVD 创建Windows 8的集成服务包安装DVD镜像,不像Windows XP那样简单。在Windows XP中,可以直接将安装盘内容复制到硬盘,使用 /integrate 开关将服务包集成到文件结构,再刻录到可…

作者头像 李华