先摘抄一篇文章
pringboot打成jar包后,可直接用java -jar app.jar
啟動,或者使用 nohup java -jar app.jar &
后台啟動,也可以將 jar包鏈接到/etc/init.d/下,作為服務啟動 ,這兩種啟動方式各有缺點,可以用一個shell腳本解決這個問題
將文章最后腳本保存為sh文件,比如 spring-boot.sh
,跟jar包放在同一目錄下,給與執行權限 chomd 777 spring-boot.sh
.使用方法如下:
切換到jar目錄,執行:
sh spring-boot.sh start app.jar --spring.profiles.active=peer1
解釋:
第一個參數: 啟動命令 (start,stop,restart,status)
第二個參數: 需啟動的jar包
第三個參數: 啟動參數(可不加)
腳本中的jvm參數可以根據需求修改
#!/bin/bash SpringBoot=$2 #啟動參數 START_OPTS=$3 #JVM參數 JVM_OPTS="-Dname=$SpringBoot -Duser.timezone=Asia/Shanghai -Xms512M -Xmx512M -XX:PermSize=256M -XX:MaxPermSize=512M -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC" APP_HOME=`pwd` LOG_PATH=$APP_HOME/logs/$SpringBoot.log 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 $JVM_OPTS $SpringBoot $START_OPTS > /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
其中出現得錯誤如下 1. 啟動命令需要更改 nohup java -jar $springboot > /dev/null 2>&1 &
2. 賦予權限問題 命為 chmod 並非本文中得 chomd