說一下三種jar包在Linux的啟動方式
阿新 • • 發佈:2022-05-29
最近在linux上釋出了一個SpringBoot專案,研究了一下jar包在Linux上的集中啟動方式,特在此分享一下。
這裡預設要啟動的jar包為demo-0.0.1-SNAPSHOT.jar
第一種:當前視窗方式啟動
把jar包放到一個位置,然後執行 java -jar demo-0.0.1-SNAPSHOT.jar
這種方式,噹噹前視窗關閉的時候,服務也就關閉了。直接Ctrl+C也可以將當前服務關閉。
第二種:後臺方式啟動
nohup java -jar demo-0.0.1-SNAPSHOT.jar >> demo.log 2>&1 &
這種方式是將 demo-0.0.1-SNAPSHOT.jar 包後臺啟動,並且將日誌輸入demo.log中去了
第三種:指令碼啟動&&伺服器啟動自動啟動
第三種啟動方式中,有單純的指令碼啟動,還加入了伺服器啟動jar包自動啟動服務
檢視jdk安裝目錄 :
執行 java -verbose
看最後兩行
3.1 建立啟動指令碼 demo-start.sh
#!/bin/bash export JAVA_HOME=/usr/java/jdk-8u261-linux-x64 #對應的 jdk 位置 可以使用 which java 檢視具體位置 export PATH=$JAVA_HOME/bin:$PATH nohup java -jar /root/tianqq/demo-0.0.1-SNAPSHOT.jar >> demo.log 2>&1 & echo $! > /root/tianqq/demo-start.pid #將上一次啟動的pid 寫入到指定檔案
3.2 建立停止指令碼 demo-stop.sh
#!/bin/sh
PID=$(cat /root/tianqq/demo-start.pid)
kill -9 $PID
此時是已經建立了指令碼啟動,
3.3 伺服器啟動自動啟動
在目錄/usr/lib/systemd/system 下建立demo.service
[Unit] Description=run demo service After=network.target [Service] Type=forking # /bin/bash 下面這個一定要加,之前沒有加的時候,報了好久的203錯誤 ExecStart= /bin/bash /root/tianqq/demo-start.sh ExecStop=/root/tianqq/demo-stop.sh PrivateTmp=true [Install] WantedBy=multi-user.target
然後就是下面的一通操作
systemctl start demo #啟動 facepay 服務
systemctl stop demo #停止 facepay 服務
systemctl status demo #檢視 facepay 服務當前的執行狀態
systemctl enable demo #開機啟動 facepay 服務
systemctl disable demo #取消開機啟動 facepay 服務
systemctl list-unit-files; #檢視當前服務(是否開機啟動等)狀態
3.4 驗證
reboot # 重啟伺服器
重啟伺服器試一下,驗證下jar服務是否重啟了
這次本來是想要做一個jar包的自啟動服務的,中間遇到了一些困難,特此分享下我目前掌握的三種jar包啟動的方式。
歡迎轉載,轉載請註明原文出處
個人公眾號 :hellotqq,堅持原創輸出,堅持分享學習感悟,歡迎關注與您共同成長!