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
脚本解释
-
定义变量:
PROCESS_NAME:要检查的进程名。RESTART_COMMAND:用于重启进程的命令。
-
判断进程是否存在:
- 使用
pgrep -x命令检查指定名称的进程是否存在。如果存在,pgrep命令会返回进程的 PID,脚本会继续执行杀掉进程的操作;如果不存在,脚本会直接尝试重启进程。
- 使用
-
杀掉进程:
- 使用
pkill -x命令杀掉指定名称的进程。 - 为了确保进程已经被杀掉,脚本会等待 5 秒钟,然后再次检查进程是否还存在。
- 使用
-
重启进程:
- 执行
RESTART_COMMAND中定义的重启命令。 - 重启后,再次检查进程是否成功启动,并输出相应的提示信息。
- 执行
使用方法
- 将上述脚本保存为一个文件,例如
check_and_restart.sh。 - 给脚本添加执行权限:
chmod +x check_and_restart.sh
- 运行脚本:
./check_and_restart.sh
注意事项
- 请根据实际情况修改
PROCESS_NAME和RESTART_COMMAND变量的值。 - 确保执行脚本的用户具有足够的权限来杀掉和重启进程。
浙公网安备 33010602011771号