Shell面试题更新 2026-08-03

需要你实现一个 Shell 脚本,用于监控系统 CPU 使用率,请说明你的实现方案。

考察说明

考查 Shell 脚本编写能力,以及对系统性能监控的理解。

回答思路

  1. 【回答框架 1】监控思路:周期性读取 CPU 使用率,通常使用 top 或 vmstat 等命令。需要区分整体使用率和单核使用率,以及用户态、系统态等不同指标。
  2. 【回答框架 2】实现方案:使用 top -b -n1 结合 awk 或 sed 提取 %Cpu(s) 行,计算 id 字段(空闲率),使用率约为 100 - id。注意 top 可能需要非交互模式 -b,并指定 -n1 只取一次快照。
  3. 【回答框架 3】优化与准确度:为减少瞬时波动,可多次采样取平均值或最大值。可设置阈值,超过时输出告警或执行相应动作,如发送邮件或记录日志。
  4. 【回答框架 4】任务调度:脚本可配合 cron 定期执行,或使用循环加 sleep 实现持续监控。需考虑脚本执行频率对系统性能的影响。
  5. 【关键点 1】使用 top -b -n1 并通过 awk 解析 %Cpu(s) 行,计算使用率 = 100 - id 值。
  6. 【关键点 2】支持阈值触发告警,可扩展邮件或日志记录。
  7. 【关键点 3】脚本需考虑非交互模式、多次采样和监控频率。
  8. 【易错点 1】top 在非交互模式下的输出可能与交互模式略有不同,需注意解析正确字段。
  9. 【易错点 2】单次采样可能引起误报,建议多次采样取平均或滑动平均。
  10. 【易错点 3】监控频率过高会消耗额外系统资源,应根据系统负载合理设置。