在linux系统中创建开机自启动应用和应用自启脚本。脚本如下:
start.sh --启动目标应用的脚本
keeper.sh --循环自启目标应用脚本,用于应用进程挂掉后的自启
install.sh --应用安装脚本,第一次部署应用时执行
start.sh
#!/bin/sh #指定后台日志目录及日志文件名 logfilePath="/home/myapp/logs/" logfileName=$logfilePath"nohup.log" #如果不存在则创建 if [ ! -d "$logfilePath" ]; then mkdir -p "$logfilePath" touch "$logfileName" fi
#启动目标应用脚本【需要修改】 nohup java -jar /home/myapp/myapp-0.0.1-SNAPSHOT.jar --spring.config.location=/home/myapp/config/application.properties >/home/myapp/logs/nohup.log 2>&1 &
keeper.sh
#!/bin/sh #应用bin目录【需要修改】 appStartFile="/home/didi/bin/start.sh" #应用进程名称【需要修改】 progressName="didijoin-0.0.1-SNAPSHOT.jar" while true;do #目标应用进程名称【需要修改】 PIDS=`ps -ef|grep $progressName | grep -v grep|awk '{print $2}'` if [ "$PIDS" = "" ];then echo "the program[$progressName] is not running,restart it!" echo "restart..." sh "$appStartFile" fi sleep 3 done
install.sh
#!/bin/sh #keeper.sh文件完整目录【需要修改】 keeperFilePath="/home/myapp/bin/keeper.sh" #程序名称【需要修改】 echo "install program[myapp]..." #向rc/local文件末尾追加启动keeper任务的脚本 echo "sh $keeperFilePath">>/etc/rc.local echo "install program success!" echo "start program..." #日志目录【需要修改】 nohup sh "$keeperFilePath" >/home/myapp/logs/install.log 2>&1 & echo "start program success!"