monitor.sh
#!/bin/bash
# 定义服务进程的名称
server_process="es_server"
test_server="test_server"
# 检查服务进程是否在运行
check_process() {
if pgrep -x "$1" >/dev/null; then
return 0
else
return 1
fi
}
# 启动服务进程
start_process() {
if [ -x "$1" ]; then
"$1"
fi
}
# 监控服务进程
monitor_processes() {
while true; do
# 检查es_server进程
if ! check_process "$server_process"; then
echo "es_server进程已退出,重新启动..."
cd $(ls -td /tpdata/data/OCR/custom_ocr/es_server_V2023* | grep -v "\.tar.gz" | head -1)
start_process "./es_server.sh"
fi
# 检查sanic_es_server进程
if ! check_process "$test_server"; then
cd $(ls -td /tpdata/data/OCR/custom_ocr/sanic_es_server_V2023* | grep -v "\.tar.gz" | head -1)
echo "sanic_es_server进程已退出,重新启动..."
start_process "./test_server.sh"
fi
sleep 5
done
}
# 开机自动启动监控脚本
add_to_startup() {
# 获取当前脚本的路径
script_path=$(readlink -f "$0")
# 添加到开机启动项
if ! grep -q "$script_path" ~/.bashrc; then
echo "添加监控脚本到开机启动项..."
echo "@reboot $script_path" >> ~/.bashrc
fi
}
# 启动监控脚本
monitor_processes &
# 添加到开机启动项
add_to_startup
#!/bin/bash
# 定义服务进程的名称
test_server="test_server"
monitor_process(){
while true; do
old_pid=`ps -ef|grep -w ${test_server} |grep -v grep |awk 'NR--1 {print $2}'`
if [ -z "$old_pid" ]; then
echo "$(date + "%Y%m%d %H%M%S") ${test_server} 进程退出,重新启动..."
cd $(ls -td /usr/custom_server/${test_server}_V2024* |grep -v "\.tar.gz" |head -1)
./startup.sh
else
echo "$(date + "%Y%m%d %H%M%S") ${test_server} 进程正常..."
fi
done
}