shell脚本后台运行,每分钟循环一次,监听端口是否被占用,没占用代表程序崩溃,于是重启程序
#!/bin/bash
#日志文件
INF0_LOG_FILE="./info.log"
ERR_LOG_FILE="./err.log"
#监听时间间隔
SLEEP_TIME="60s"
time=$(date "+%Y-%m-%d %H:%M:%S")
# 监听端口
# $1端口 $2重启命令
function monitorPort() {
#查询端口占用
lsof -i:$1
# $? -ne 0 不存在 $? -eq 0存在
if [ $? -ne 0 ]
then
echo 端口 $1 没启动 >> $INF0_LOG_FILE
echo $time 端口 $1 没启动 >> $ERR_LOG_FILE
echo 端口 $1 准备启动 >> $INF0_LOG_FILE
eval $2
sleep 5
time=$(date "+%Y-%m-%d %H:%M:%S")
lsof -i:$1
if [ $? -ne 0 ]
then
echo 端口 $1 启动成功 >> $INF0_LOG_FILE
echo $time 端口 $1 启动成功 >> $ERR_LOG_FILEs
else
echo 端口 $1 启动失败 >> $INF0_LOG_FILE
echo $time 端口 $1 启动失败 * >> $ERR_LOG_FILE
fi
else
echo 端口 $1 正常 >> $INF0_LOG_FILE
fi
}
#脚本开始**********************************************************
#-e增加转义功能 \n
echo -e "\n\n"$(date "+%Y-%m-%d %H:%M:%S") "脚本启动 *********************\n\n" >> $INF0_LOG_FILE
while true
do
time=$(date "+%Y-%m-%d %H:%M:%S")
echo -e "\n"$time " -----------------------------------------" >> $INF0_LOG_FILE
monitorPort 8084 "nohup java -jar /usr/local/springboot/youxi/springboot-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod --server.port=8084 >/dev/null 2>&1 &"
monitorPort 8085 "nohup java -jar /usr/local/springboot/youxi/springboot-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod --server.port=8085 >/dev/null 2>&1 &"
sleep $SLEEP_TIME
done