linux自動部署jar包,註冊系統服務(基於Centos7)
阿新 • • 發佈:2018-11-20
最近一直在搞伺服器,現在要執行我們的程式,都是jar包的格式,但是每次輸入執行命令都很麻煩,現在進行放入指令碼啟動或者註冊服務啟動,來簡化啟動,但是這個方法也有一定的缺陷,需要一定的標準規範才可以正確執行,比如jar包的打包名稱一定要和指令碼中的名稱一樣
下面進入正題,首先來指令碼啟動
說一下前提,根據自己的需求修改相應的路徑
1. jar包路徑 /usr/local/docpc
2. jar包名稱 doctor-pc-0.0.1-SNAPSHOT.jar
3. java路徑 /usr/bin/java
新建啟動指令碼
指令碼啟動的日誌會在jar包目錄下生成
# vim start.sh
指令碼內容如下
#啟動命令所在目錄 HOME='/usr/local/docpc' start(){ #進入命令所在目錄 cd $HOME nohup sudo /usr/bin/java -jar doctor-pc-0.0.1-SNAPSHOT.jar > doctor-pc-0.0.1-SNAPSHOT.jar.log 2>&1 & } stop(){ #kill 掉所有java程式 ps -ef | grep doctor-pc-0.0.1| grep -v grep |awk '{print $2}' | xargs sudo kill -9 } case $1 in start) start ;; stop) stop ;; restart) $0 stop sleep 2 $0 start ;; *) echo "Usage: {start|stop|restart}" ;; esac exit
啟動
./start.sh start
關閉
./start.sh stop
重啟
./start.sh restart
至此指令碼啟動完成,在jar包的同等級目錄下會生成日誌
下面來講一下把jar包的啟動註冊到系統服務並新增到開機自啟
jar包路徑 /usr/local/docpc/
- 進入 /lib/systemd/system
# cd /lin/systemd/system
- 新建 docpc.service
# vim docpc.service
- docpc.service內容如下
[Unit] Description=docpc After=network.target [Service] ExecStart=/usr/bin/java -jar /usr/local/docpc/doctor-pc-0.0.1-SNAPSHOT.jar ExecReload=/bin/kill -s HUP $MAINPID ExecStop= ps -ef | grep doctor-pc-0.0.1| grep -v grep |awk '{print $2}' | xargs sudo kill -9 [Install] WantedBy=multi-user.target
- 給docpc.service加檔案許可權
# chmod 777 docpc.service
- 啟動服務
# systemctl start docpc.service
- 關閉
# systemctl stop docpc.service
- 重啟
# systemctl restart docpc.service
- 加入開機自啟
# systemctl enable docpc.service
- 關閉開機自啟
# systemctl disable docpc.service
到此,jar包的系統服務設定完成,指令碼啟動和註冊系統是兩個不同的啟動方式,各位可以把啟動指令碼放入開機自動也可實現指令碼的開機啟動,這裡就不說了,大家可以去Google一下。註冊系統服務的時候本人也是想可以輸出一下日誌的,但是嘗試不成功,各位如果有建議可以留言,本人虛心受教,至於windows版的jar包啟動可以關注本人的另一篇windows啟動jar包指令碼的部落格