整活 · 24 10 月, 2024 0

Linux使用shell脚本和crontab监测服务状态并实现服务重启

背景

租的便宜VPS时不时就给我自动重启,然后每次系统重启时Nginx服务都会启动失败。本着“能跑就行”的伟大精神,比起花时间调查原因,不如写个脚本定期监测Nginx的服务状态,发现服务没启动就启动它不就好了。

怎么做

  1. 创建/root/check_nginx.sh,内容如下:
#!/bin/bash

# 检查 nginx 服务的状态
nginx_status=$(systemctl is-active nginx)

# 如果 nginx 没有运行,则启动服务
if [ "$nginx_status" != "active" ]; then
    echo "Nginx 服务未运行,正在启动..."
    sudo systemctl start nginx

    # 再次检查服务是否启动成功
    if [ "$(systemctl is-active nginx)" == "active" ]; then
        echo "Nginx 服务已成功启动。"
    else
        echo "Nginx 服务启动失败,请检查错误日志。"
    fi
else
    echo "Nginx 服务正在运行。"
fi
  1. 将脚本启动指令写入crontab。Root用户执行crontab -e,添加以下内容:
# 每30分钟执行一次检查
*/30 * * * * bash /root/check_nginx.sh

搞定✨

写在最后

脚本是死的,人是活的。请根据环境和实际需要适当修改以上案例中的脚本。