一、应用场景
生产系统java多个进程(java1、java2、java3、java4),不管哪一个挂掉,然后把其他 kill掉后,再启动java1间隔十秒启动java2,半分钟后,再启动 java3间隔十秒启动java4
#!/bin/bash
processes=("java1" "java2" "java3" "java4")
check_process() {
process_name=$1
echo $process_name
if pgrep -f "$process_name" > /dev/null; then
return 0
else
return 1
fi
}
kill_processes() {
for p in "${processes[@]}"; do
pkill -f "$p"
done
}
restart_processes() {
echo "`date "+%Y-%m-%d %H:%M:%S"`: Starting java3..."
/root/server/java3/startup.sh &
sleep 10
echo "`date "+%Y-%m-%d %H:%M:%S"`: Starting java4..."
/root/server/java4/bin/startup.sh &
sleep 30
echo "`date "+%Y-%m-%d %H:%M:%S"`: Starting java1..."
/root/server/java1/startup.sh &
sleep 10
/root/server/java2/bin/startup.sh &
echo "`date "+%Y-%m-%d %H:%M:%S"`: Starting java2...."
}
while true; do
for process in "${processes[@]}"; do
if ! check_process "$process"; then
echo "`date "+%Y-%m-%d %H:%M:%S"`: $process has stopped. Restarting all processes..."
kill_processes
restart_processes
break
fi
done
sleep 60
echo "`date "+%Y-%m-%d %H:%M:%S"`: Late Minute All Processes is Running"
done