適用範圍:
Spring Boot項目jar包啓動,停止,重啓,狀態等。
腳本執行:
- 把腳本放到項目文件夾
- 更改腳本權限,增加執行權限
chmod +x spring-boot.sh
- 啓動服務
sh spring-boot.sh start jar包名
正常情況,會出現"Start gateway-server-1.0.0-exec.jar success..."字樣
- 查看狀態
sh spring-boot.sh status jar包名
正常情況,會出現"gateway-server-1.0.0-exec.jar is running..."字樣
- 停止服務
sh spring-boot.sh stop jar包名
正常情況,會出現"Stop gateway-server-1.0.0-exec.jar"字樣
- 重啓服務
sh spring-boot.sh restart jar包名
正常情況會出現"Stop gateway-server-1.0.0-exec.jar","Start gateway-server-1.0.0-exec.jar success..."字樣
腳本代碼:
#!/bin/bash
SpringBoot=$2
if [ "$1" = "" ];
then
echo -e "\033[0;31m 未輸入操作名 \033[0m \033[0;34m {start|stop|restart|status} \033[0m"
exit 1
fi
if [ "$SpringBoot" = "" ];
then
echo -e "\033[0;31m 未輸入應用名 \033[0m"
exit 1
fi
function start()
{
count=`ps -ef |grep java|grep $SpringBoot|grep -v grep|wc -l`
if [ $count != 0 ];then
echo "$SpringBoot is running..."
else
echo "Start $SpringBoot success..."
nohup java -jar $SpringBoot > /dev/null 2>&1 &
fi
}
function stop()
{
echo "Stop $SpringBoot"
boot_id=`ps -ef |grep java|grep $SpringBoot|grep -v grep|awk '{print $2}'`
count=`ps -ef |grep java|grep $SpringBoot|grep -v grep|wc -l`
if [ $count != 0 ];then
kill $boot_id
count=`ps -ef |grep java|grep $SpringBoot|grep -v grep|wc -l`
boot_id=`ps -ef |grep java|grep $SpringBoot|grep -v grep|awk '{print $2}'`
kill -9 $boot_id
fi
}
function restart()
{
stop
sleep 2
start
}
function status()
{
count=`ps -ef |grep java|grep $SpringBoot|grep -v grep|wc -l`
if [ $count != 0 ];then
echo "$SpringBoot is running..."
else
echo "$SpringBoot is not running..."
fi
}
case $1 in
start)
start;;
stop)
stop;;
restart)
restart;;
status)
status;;
*)
echo -e "\033[0;31m Usage: \033[0m \033[0;34m sh $0 {start|stop|restart|status} {SpringBootJarName} \033[0m
\033[0;31m Example: \033[0m
\033[0;33m sh $0 start esmart-test.jar \033[0m"
esac
sh腳本從window到linux啓動可能會遇到問題:在linux下執行的時候可能會提示找不到文件,例如spring-boot.sh:只需要vim spring-boot.sh,然後:set ff=unix,最後:wq即可
注意:
如果 jenkins 使用這個腳本, 需要在 java -jar 命令前添加 BUILD_ID=dontKillMe
, 不然 jenkins 會殺掉進程。
參考: https://stackoverflow.com/questions/39169457/how-to-tell-jenkins-not-to-kill-processes-after-successful-execution-of-job-in-m