linux的shell脚本监测一个进程号如果进程号不在了就重启该程序
时间: 2024-10-14 14:13:49 浏览: 13
在Linux下编写shell脚本来监控一个进程并当它不存在时自动重启,可以使用`pgrep`, `kill`, 和 `nohup` 等命令结合循环和条件判断。以下是一个简单的示例:
```bash
#!/bin/bash
# 设置进程名称变量
PROC_NAME="your_process_name"
# 使用pgrep查找进程是否存在
if ! pgrep -f $PROC_NAME > /dev/null; then
echo "进程 $PROC_NAME 未运行,正在启动..."
# 使用nohup在后台运行程序并忽略退出信号
nohup your_program_command & disown
# 程序启动成功后等待一段时间,比如5秒,防止立即检测到新进程
sleep 5
else
echo "进程 $PROC_NAME 正在运行..."
fi
# 持续监控,每分钟检查一次
while true; do
if ! pgrep -f $PROC_NAME > /dev/null; then
echo "进程 $PROC_NAME 已停止,正在重启..."
nohup your_program_command & disown
sleep 5
fi
sleep 60 # 每隔一分钟检查一次
done
```
在这个脚本中,你需要将 `your_process_name` 替换为你想要监控的实际进程名,`your_program_command` 替换为启动该程序的具体命令。
阅读全文