centos7下將java -jar命令運行一個項目做成systemd服務


有些時候運行一個java項目在linux下通過一條簡單的java命令即可,如:

#nohup java -jar jenkins.war &   ###這里為后台運行jenkins  

在此背景下,java進程因各種原因導致進程被kill。或者主動結束進程忘記開啟。程序不會自動啟動起來。
可以考慮將其做成systemd服務,當進程掛掉之后會自動啟動起來

1.環境介紹(目錄結構)

### 實驗環境為一台機器運行多個jar包或者war包,且包存放在/opt/sdk目錄下。且有啟動和關閉腳本,logs日志目錄
╭─◆root@  localhhost opt/sdk
╰─># ll
total 335684
-rw-r--r-- 1 www www 34698758 Mar  1 18:08 DibDirector.jar
-rw-r--r-- 1 www www 44491920 Mar  1 12:29 DibFinance.jar
-rw-r--r-- 1 www www 34686621 Mar  1 12:28 DibGovernance.jar
-rw-r--r-- 1 www www 49526812 Nov  6 20:31 DibManage.jar
-rw-r--r-- 1 www www 74093277 Nov  6 20:29 DibResource.jar
-rw-r--r-- 1 www www 23007795 Nov  5 17:14 DibSdk.jar
-rw-rw-r-- 1 www www 34484128 Mar 18 23:08 DibShares.jar
-rw-r--r-- 1 www www 48724992 Mar  1 12:28 DibSign.jar
drwxrwxr-x 2 www www      168 Mar 22 09:33 logs/
-rwxrwxr-x 1 www www      219 Mar 18 23:09 start.sh*
-rwxrwxr-x 1 www www       89 Nov  6 13:44 stop.sh*

2.啟動腳本通過傳遞的第一個參數決定啟動哪一個jar包

╰─># cat start.sh 
#!/bin/bash
export JAVA_HOME=/opt/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
CMD_PATH="/opt/sdk"
sdk=$1
#cd $CMD_PATH
java -jar ${CMD_PATH}/${sdk}.jar > ${CMD_PATH}/logs/${sdk}.log &
echo $! > $CMD_PATH/logs/${sdk}.pid

3.關閉腳本通過傳遞的第一個參數關閉某一個jar程序

╰─># cat stop.sh 
#!/bin/bash
CMD_PATH="/opt/sdk"
sdk=$1
PID=$(cat $CMD_PATH/logs/${sdk}.pid)
kill -9 $PID

4.此處以DibDirector.jar為例:新建DibDirector.service文件

╰─># cat /etc/systemd/system/DibDirector.service
# Systemd unit file for tomcat
[Unit]
Description=Dibcn SDK application
After=syslog.target network.target

[Service]
Type=forking

Environment=JAVA_HOME=/opt/local/jdk
ExecStart=/opt/sdk/start.sh DibDirector
ExecStop=/opt/sdk/stop.sh DibDirector
PrivateTmp=true

User=www
Group=www
UMask=0007
RestartSec=5
Restart=always

[Install]
WantedBy=multi-user.target

5.將其開機設置為開機啟動

╰─># systemctl enable DibDirector.service

6.備注

1.啟動和關閉腳本必須賦予執行權限
2.例子用戶權限全部為www用戶,即為www用戶啟動服務
3.不同情況可根據此筆記適當修改,即可使用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM