Shell 检查程序进程是否存在,自动重启
作者:最爱小胖子
- 2024-03-08 上海
本文字数:528 字
阅读完需:约 2 分钟
| 待验证,检测服务器上应用进程是否存在,如果不存在(超过 5 分钟,重启程序),
#!/bin/bash
# 进程列表和对应的启动脚本
processes=("进程1" "进程2" "进程3")
startup_scripts=("启动脚本1.sh" "启动脚本2.sh" "启动脚本3.sh")
check_interval=60 # 检查间隔(秒)
check_count=5 # 检查次数
# 检查进程是否存在的函数
check_process() {
# 使用pgrep命令查找指定进程的PID
pgrep -x "$1" > /dev/null
# 检查pgrep命令的退出状态
if [[ $? -eq 0 ]]; then
echo "进程 $1 存在"
else
echo "进程 $1 不存在"
# 循环检查多次
for ((i = 1; i <= check_count; i++)); do
sleep "$check_interval"
pgrep -x "$1" > /dev/null
if [[ $? -eq 0 ]]; then
echo "进程 $1 已重启"
return
fi
done
# 调用启动脚本
echo "调用启动脚本 ${startup_scripts[$2]}"
./"${startup_scripts[$2]}"
fi
}
# 循环遍历进程列表并调用函数检查进程是否存在
for i in "${!processes[@]}"; do
check_process "${processes[$i]}" "$i"
done
复制代码
添加到定时任务
crontab -e
复制代码
# 6分钟执行一次
*/6 * * * * /bin/bash /path/to/your/script.sh
复制代码
查询定时任务列表:
crontab -l
复制代码
划线
评论
复制
发布于: 刚刚阅读数: 3
最爱小胖子
关注
还未添加个人签名 2019-07-08 加入
还未添加个人简介
评论