面试题答案
一键面试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
目录下。
- 编辑
cron
任务:- 执行命令
crontab -e
,会打开cron
的编辑文件。
- 执行命令
- 添加定时任务:
- 例如,每15分钟运行一次脚本,可以在打开的文件中添加如下一行:
*/15 * * * * /bin/bash /root/scripts/monitor.sh
- 这行命令表示,在每小时的第0、15、30、45分钟,执行
/bin/bash /root/scripts/monitor.sh
这个命令,也就是运行我们编写的监控脚本。
注意:
- 确保脚本具有可执行权限,即
chmod +x /root/scripts/monitor.sh
。 - 确保服务器上安装并配置好了邮件发送相关的工具,例如
mailutils
等,以便能够正常发送邮件。