Linux版本 Centos7詳細步驟如下:
第一種方式:
1在/etc/init.d/目錄下創建shell啟動腳本autojar.sh
-
cd /etc/init.d/
-
touch autojar.sh
-
vi autojar.sh
內容如下:
#!/bin/sh
# chkconfig: 2345 85 15
# description:auto_run
#程序名
RUN_NAME="SpringBoot.jar"
#jar包位置
JAVA_OPTS=/software/SpringBoot.jar
#后台運行日志位置
LOG_OPTS=/software/nohup.out
#開始方法
start() {
nohup java -jar $JAVA_OPTS >$LOG_OPTS 2>&1 &
echo "$RUN_NAME started success."
}
#結束方法
stop() {
echo "stopping $RUN_NAME ..."
kill -9 `ps -ef|grep $JAVA_OPTS|grep -v grep|grep -v stop|awk '{print $2}'`
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Userage: $0 {start|stop|restart}"
exit 1
esac
第一行,告訴系統使用的shell,所以的shell腳本都是這樣。
第二行,2345代表在設置在那個level中是on的,如果一個都不想on,那就寫一個橫線"-",85和15, 后面兩個數字代表S和K的默認排序號 ,告訴chkconfig程序,需要在rc2.d~rc5.d目錄下,創建名字為S80autojar的文件連接, 第一個字符是S,系統在啟動的時候,運行腳本autojar
注意上面的三行中,第二,第三行是必須的,否則在運行chkconfig –add auto_run時,會報錯。
85 數字越小 啟動優先級別越高
15數字越小 關閉優先級別越高
2.設置執行權限
chmod +x /etc/init.d/autojar.sh
chmod +x /software/SpringBoot.jar
3.添加到chkconfig作為系統服務,並設置開機啟動:
系統在啟動的時候,就會運行autojar並加上start參數,等同於執行命令autojar start。
chkconfig --add autojar.sh (添加為系統服務)
chkconfig autojar.sh on (開機自啟動)
service autojar.sh start(啟動服務)
4.重啟
reboot
5.查看
netstat -ntlp | grep 8082 (查看端口)
ps aux|grep java(查看服務)
說明:
chkconfig提供一種簡單的命令行工具來幫助管理員對/etc/rc[0-6].d目錄層次下的眾多的符號鏈接進行直接操作。 此命令使用是由chkconfig命令在IRIX操作系統提供授權。不用在/etc/rc[0-6].d目錄下直接維護配置信息,而是直接在/etc/rc[0-6]下管理鏈接文件。在運行級別的目錄下的配置信息通知在將會初始啟動哪些服務。
Chkconfig有五個很明確的功能:為管理增加一個新的功能、刪除一個功能、列出當前服務的啟動信息、改變一個服務的啟動信息和檢測特殊服務的啟動狀態。
當chkconfig沒有參數運行時,它將顯示其使用方法。如果只給出了一個服務名,它將檢測這個服務名是否已經被配置到了當前運行級別中。如果已經配置,返回真,否則返回假。--level選項可以被用做查詢多個運行級別而不僅僅是一個。
如果在服務名之后指定了on,、off或reset,chkconfig將改變指定服務的啟動信息。On或off標記服務被打開或停止,尤其是在運行級別被改變時。Reset標記重置服務的啟動信息。
默認情況下,on或off選項僅對2、3、4、5有影響,而 reset影響所有的運行級。--level選項可以被用於指定哪個運行級別接收影響。
注意:對於每個服務,每一個運行級都有一個開始角本和一個結束角本。當開或關一個運行級時,init不會重新開始一個已經運行的服務,也不會重新停止一個未運行的服務。
選項:
--level levels 指定一個運行級別適合的操作。范圍為0-7。
--add name 增加一個新的服務。
--del name 刪除一個服務
--list name 顯示服務的情況
RUNLEVEL FILES
每個通過chkconfig管理的服務在其init.d目錄下的角本中都需要兩行或多行的注釋。
第一行告訴chkconfig在默認情況下什么運行級別的服務可以開始,也就是所說的開始或結束的優先級別。如果服務沒有默認的級別,建造將在所有運行級別中啟動。a – 將用於代替運行級列表。第二個注釋行包括對此服務的描述,可以通過反斜線符號擴展為多行。
示例,
auto_run的前三行如下:
#!/bin/sh
#chkconfig: 2345 80 90
#description:auto_run
第一行,告訴系統使用的shell,所以的shell腳本都是這樣。
第二行,chkconfig后面有三個參數2345,80和90告訴chkconfig程序,需要在rc2.d~rc5.d目錄下,創建名字為 S80auto_run的文件連接,連接到/etc/rc.d/init.d目錄下的的auto_run腳本。第一個字符是S,系統在啟動的時候,運行腳本auto_run,就會添加一個start參數,告訴腳本,現在是啟動模式。同時在rc0.d和rc6.d目錄下,創建名字為K90auto_run的文件連接,第一個字符為K,系統在關閉系統的時候,會運行auto_run,添加一個stop,告訴腳本,現在是關閉模式。 注意上面的三行中,第二,第三行是必須的,否則在運行chkconfig --add auto_run時,會報錯。
-
常見的錯誤 “服務不支持 chkconfig”: 請注意檢查腳本的前面,是否有完整的兩行:
#chkconfig: 2345 80 90
#description:auto_run
在腳本前面這兩行是不能少的,否則不能chkconfig命令會報錯誤。 如果運行chkconfig老是報錯,如果腳本沒有問題,我建議,直接在rc0.d~rc6.d下面創建到腳本的文件連接來解決,原理都是一樣的。
第二種方式:
1、在項目目錄創建shell腳本
-
cd /software/
-
touch runJar.sh
-
vi /software/runJar.sh
#!/bin/bash
nohup java -jar /software/SpringBoot.jar >/software/nohup.out 2>&1 &
sleep 5
nohup java -jar /software/SpringBootB.jar >/software/nohupb.out 2>&1 &
2、修改開機啟動文件 /etc/rc.local
#!/bin/bash # THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES # # It is highly advisable to create own systemd services or udev rules # to run scripts during boot instead of using this file. # # In contrast to previous versions due to parallel execution during boot # this script will NOT be run after all other services. # # Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure # that this script will be executed during boot. touch /var/lock/subsys/local /software/runJar.sh exit 0
3、執行文件授權命令
chmod +x /software/runJar.sh
chmod +x /etc/rc.local
4、檢查腳本是否配置正常
bash /etc/rc.local
5.重啟
reboot
6.查看
netstat -ntlp | grep 8082 (查看端口)
ps aux|grep java(查看服務)
