MST

星途 面试题库

面试题:Bash脚本自动化运维之系统资源监控

假设你需要编写一个Bash脚本用于自动化监控服务器的CPU使用率、内存使用率和磁盘空间使用率。当CPU使用率超过80%,内存使用率超过90%,或者磁盘空间使用率超过95%时,脚本需要发送一封邮件到指定邮箱,通知管理员。请使用Bash脚本实现该功能,并且说明在实际生产环境中,如何设置定时任务让这个脚本定期运行。
42.9万 热度难度
编程语言Bash

知识考点

AI 面试

面试题答案

一键面试

1. Bash脚本实现监控和邮件发送功能

#!/bin/bash

# 获取CPU使用率
cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}')
# 获取内存使用率
mem_usage=$(free -h | awk 'NR==2{printf "%.2f", ($3/$2)*100}')
# 获取磁盘空间使用率
disk_usage=$(df -h | awk '$NF=="/"{printf "%.2f", ($3/$2)*100}')

# 收件人邮箱
to_email="admin@example.com"

# 检查CPU使用率
if (( $(echo "$cpu_usage > 80" | bc -l) )); then
    echo "CPU使用率过高: $cpu_usage%" | mail -s "服务器监控警报 - CPU使用率过高" $to_email
fi

# 检查内存使用率
if (( $(echo "$mem_usage > 90" | bc -l) )); then
    echo "内存使用率过高: $mem_usage%" | mail -s "服务器监控警报 - 内存使用率过高" $to_email
fi

# 检查磁盘空间使用率
if (( $(echo "$disk_usage > 95" | bc -l) )); then
    echo "磁盘空间使用率过高: $disk_usage%" | mail -s "服务器监控警报 - 磁盘空间使用率过高" $to_email
fi

2. 设置定时任务让脚本定期运行

在实际生产环境中,可以使用cron来设置定时任务。假设上述脚本保存为monitor.sh,并且位于/root/scripts目录下。

  1. 编辑cron任务
    • 执行命令crontab -e,会打开cron的编辑文件。
  2. 添加定时任务
    • 例如,每15分钟运行一次脚本,可以在打开的文件中添加如下一行:
    */15 * * * * /bin/bash /root/scripts/monitor.sh
    
    • 这行命令表示,在每小时的第0、15、30、45分钟,执行/bin/bash /root/scripts/monitor.sh这个命令,也就是运行我们编写的监控脚本。

注意:

  1. 确保脚本具有可执行权限,即chmod +x /root/scripts/monitor.sh
  2. 确保服务器上安装并配置好了邮件发送相关的工具,例如mailutils等,以便能够正常发送邮件。