shell脚本判断进程是否存在,杀掉并重启进程

以下是一个简单的 Shell 脚本示例,用于判断某个进程是否存在,如果存在则杀掉该进程,然后重启它。这里以判断 nginx 进程为例,你可以根据实际需求修改进程名和重启命令。

脚本示例

#!/bin/bash

# 定义要检查的进程名
PROCESS_NAME="nginx"
# 定义重启进程的命令
RESTART_COMMAND="systemctl restart nginx"

# 判断进程是否存在
if pgrep -x "$PROCESS_NAME" > /dev/null; then
    echo "$PROCESS_NAME 进程正在运行,准备杀掉它..."
    # 杀掉进程
    pkill -x "$PROCESS_NAME"
    # 等待一段时间确保进程被杀掉
    sleep 5
    if pgrep -x "$PROCESS_NAME" > /dev/null; then
        echo "无法杀掉 $PROCESS_NAME 进程,请手动处理。"
    else
        echo "$PROCESS_NAME 进程已成功杀掉,准备重启..."
        # 重启进程
        $RESTART_COMMAND
        if pgrep -x "$PROCESS_NAME" > /dev/null; then
            echo "$PROCESS_NAME 进程已成功重启。"
        else
            echo "无法重启 $PROCESS_NAME 进程,请检查。"
        fi
    fi
else
    echo "$PROCESS_NAME 进程未运行,直接重启..."
    # 直接重启进程
    $RESTART_COMMAND
    if pgrep -x "$PROCESS_NAME" > /dev/null; then
        echo "$PROCESS_NAME 进程已成功重启。"
    else
        echo "无法重启 $PROCESS_NAME 进程,请检查。"
    fi
fi

脚本解释

  1. 定义变量:
    • PROCESS_NAME:要检查的进程名。
    • RESTART_COMMAND:用于重启进程的命令。
  2. 判断进程是否存在:
    • 使用 pgrep -x 命令检查指定名称的进程是否存在。如果存在,pgrep 命令会返回进程的 PID,脚本会继续执行杀掉进程的操作;如果不存在,脚本会直接尝试重启进程。
  3. 杀掉进程:
    • 使用 pkill -x 命令杀掉指定名称的进程。
    • 为了确保进程已经被杀掉,脚本会等待 5 秒钟,然后再次检查进程是否还存在。
  4. 重启进程:
    • 执行 RESTART_COMMAND 中定义的重启命令。
    • 重启后,再次检查进程是否成功启动,并输出相应的提示信息。

使用方法

  1. 将上述脚本保存为一个文件,例如 check_and_restart.sh
  2. 给脚本添加执行权限:
chmod +x check_and_restart.sh

  1. 运行脚本:
./check_and_restart.sh

注意事项

  • 请根据实际情况修改 PROCESS_NAME 和 RESTART_COMMAND 变量的值。
  • 确保执行脚本的用户具有足够的权限来杀掉和重启进程。

posted on   阿陶学长  阅读(31)  评论(0编辑  收藏  举报

(评论功能已被禁用)
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示