You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:编写Shell脚本实现CentOS 6.2指定PID服务的Cron监控与自动重启

监控指定PID服务并自动重启的Shell脚本方案(CentOS 6.2)

Hey there! 刚接触CentOS 6.2就能自己琢磨监控脚本,已经很棒了😉。针对你遇到的「已知PID但重启环节卡壳」的问题,我给你整理一套完整的实现方案,一步步来:

第一步:编写Shell监控脚本

先写核心逻辑:检查目标PID对应的进程是否存活,若进程消失则自动重启服务。直接复制下面的脚本,替换成你的实际参数即可:

#!/bin/bash
# 替换成你要监控的目标PID
TARGET_PID="1234"
# 替换成服务的实际启动命令,比如service nginx start / /usr/bin/your-service-start
START_CMD="/usr/bin/service your_service start"
# 日志文件路径,用来记录监控和重启情况
LOG_FILE="/var/log/service_monitor.log"

# 检查PID对应的进程是否存在
if ! ps -p $TARGET_PID > /dev/null 2>&1; then
    echo "$(date '+%Y-%m-%d %H:%M:%S'): PID $TARGET_PID 对应的服务已停止,正在执行重启..." >> $LOG_FILE
    # 执行重启命令
    $START_CMD
    # 等待5秒后检查重启是否成功
    sleep 5
    if ps -p $TARGET_PID > /dev/null 2>&1; then
        echo "$(date '+%Y-%m-%d %H:%M:%S'): 服务重启成功,当前PID仍为 $TARGET_PID" >> $LOG_FILE
    else
        echo "$(date '+%Y-%m-%d %H:%M:%S'): 警告!服务重启失败,请手动排查问题!" >> $LOG_FILE
    fi
else
    echo "$(date '+%Y-%m-%d %H:%M:%S'): PID $TARGET_PID 对应的服务运行正常" >> $LOG_FILE
fi

脚本关键逻辑说明

  • ps -p $TARGET_PID > /dev/null 2>&1:静默检查PID是否存在,只返回状态码,不输出冗余信息
  • 用!取反状态码,当进程不存在时触发重启逻辑
  • 日志写入/var/log/service_monitor.log,方便后续排查监控记录

第二步:给脚本添加执行权限

把脚本放到系统可调用的目录(比如/usr/local/bin),然后添加执行权限:

mv service_monitor.sh /usr/local/bin/
chmod +x /usr/local/bin/service_monitor.sh

第三步:配置Cron定时任务

CentOS 6.2用Cron实现定时监控,步骤如下:

  1. 编辑当前用户的Cron任务(如果需要root权限执行,就加sudo):
crontab -e
  1. 添加定时规则,比如每2分钟检查一次(根据你的需求调整频率):
*/2 * * * * /usr/local/bin/service_monitor.sh

Cron格式说明:分 时 日 月 周,*/2表示每2分钟执行一次,改成* * * * *就是每分钟检查一次。
3. 保存退出后,重启Cron服务生效:

service crond restart

重要注意事项

  • 如果你的服务重启后PID会变化,固定PID监控可能失效!建议改成通过服务名称监控,把检查逻辑替换成:
    if ! service your_service status > /dev/null 2>&1; then
        # 重启逻辑
    fi
    
    CentOS 6.2的service命令支持status参数判断服务状态,这种方式比固定PID更可靠。
  • 确保脚本的启动命令有足够权限,比如服务需要root启动,就用sudo crontab -e配置root用户的Cron任务。
  • 定期查看日志/var/log/service_monitor.log,确认脚本是否正常工作。

内容的提问来源于stack exchange,提问作者Dr.Bradley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:25:16