Linux VPS服务器上监控CPU负载和内存具体使用情况,并且在达到特定阈值时自动重启服务器,如何使用Bash Shell脚本来实现。脚本将根据您设定的条件定期检查系统负载和内存使用情况,并在达到特定条件时执行重启操作。
Linux VPS服务器自动重启Bash Shell脚本,以下是简单的Bash脚本,用于监控系统CPU负载和内存使用情况,并在超过预设阈值时自动重启服务器。
#!/bin/bash
# 设置CPU负载阈值和内存使用阈值
CPU_THRESHOLD=2.0 # CPU平均负载超过2.0时重启
MEMORY_THRESHOLD=80 # 内存使用超过80%时重启
# 获取当前CPU负载和内存使用情况
CPU_LOAD=$(awk '{print $1}' /proc/loadavg)
MEMORY_USAGE=$(free | awk '/Mem/{printf("%.0f"), $3/$2*100}')
# 检查CPU负载是否超过阈值
if (( $(echo "$CPU_LOAD > $CPU_THRESHOLD" | bc -l) )); then
echo "CPU负载过高,当前负载:$CPU_LOAD,超过阈值:$CPU_THRESHOLD"
echo "正在重启服务器..."
# 重启服务器
sudo reboot
fi
# 检查内存使用是否超过阈值
if [ "$MEMORY_USAGE" -gt "$MEMORY_THRESHOLD" ]; then
echo "内存使用过高,当前使用:$MEMORY_USAGE%,超过阈值:$MEMORY_THRESHOLD%"
echo "正在重启服务器..."
# 重启服务器
sudo reboot
fi
echo "CPU负载和内存使用情况正常,当前CPU负载:$CPU_LOAD,内存使用:$MEMORY_USAGE%"
具体的使用说明
保存脚本,将上述脚本保存为 monitor.sh 文件:
nano monitor.sh
然后粘贴脚本内容并保存。
修改阈值
CPU_THRESHOLD:设置CPU负载的阈值。根据您的需求进行调整,例如设置为 2.0 表示当系统平均负载超过2.0时重启。
MEMORY_THRESHOLD:设置内存使用的百分比阈值。例如,设置为 80 表示当内存使用超过80%时重启。
赋予执行权限,可以使脚本执行:
chmod +x monitor.sh设置为定时任务,使用cron定期执行脚本。
编辑cron任务:
crontab -e
添加以下行,每5分钟运行一次脚本:
*/5 * * * * /path/to/monitor.sh
将 /path/to/monitor.sh 替换为脚本的实际路径。
确保脚本有权限执行sudo reboot命令,您可能需要为当前用户配置sudoers权限,允许其无需密码即可执行重启命令。
编辑sudoers文件:
sudo visudo
添加以下行,假设用户名为 yourusername:
yourusername ALL=(ALL) NOPASSWD: /sbin/reboot
替换 yourusername 为实际的用户名。