使用Linux脚本启动、停止springboot项目!
- 查找端口为3333的服务进程,然后用kill命令杀掉
netstat -anp|grep 3333|awk '{printf $7}'|cut -d/ -f1 |xargs kill -9 || true
- 使用nohup 命令启动程序,并把程序启动到后台运行,然后输出日志到nohup.log文件当中
nohup java -jar /usr/local/web/assistant-0.0.1-SNAPSHOT.jar > nohup.log 2>&1 &
- 检测服务是否启动成功,利用curl访问服务地址,如果请求的URL状态为200侧启动成功,完整代码如下:
#! /bin/shell
APP_START_TIMEOUT=50 # 等待应用启动的时间
APP_PORT=3333 # 应用端口
HEALTH_CHECK_URL=http://127.0.0.1:${APP_PORT}/api/test # 应用健康检查URL
source /etc/profile
echo "stop service ..."
netstat -anp|grep ${APP_PORT}|awk '{printf $7}'|cut -d/ -f1 |xargs kill -9 || true
echo "stop service success!"
nohup java -jar /usr/local/web/assistant-0.0.1-SNAPSHOT.jar > nohup.log 2>&1 &
#echo "启动服务成功"
exptime=0
echo "checking ${HEALTH_CHECK_URL}"
while true
do
status_code=`/usr/bin/curl -L -o /dev/null --connect-timeout 5 -s -w %{http_code} ${HEALTH_CHECK_URL}`
if [ x$status_code != x200 ];then
sleep 1
((exptime++))
echo -n -e "\rWait app to pass health check: $exptime..."
else
break
fi
if [ $exptime -gt ${APP_START_TIMEOUT} ]; then
echo
echo 'app start failed'
exit 1
fi
done
echo "check ${HEALTH_CHECK_URL} success"