1. 程式人生 > >【Linux】新增web應用(jar包)為系統服務

【Linux】新增web應用(jar包)為系統服務

      為了可以將jar包新增成Linux的系統服務,需要做以下幾樣準備:

      ①啟動指令碼start.sh

#!/bin/bash
export JAVA_HOME=/usr/local/jdk1.8.0_171
export PATH=$JAVA_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin


nohup java -jar /usr/local/xxx/ptms/ptms-1.0.0.jar -Xmx1G -Xms512M -server -XX:+UseG1GC >>/dev/null  2>&1 &
echo $! > /var/run/xxx/ptms.pid

      ②停止指令碼stop.sh

#!/bin/bash
PID=$(cat /var/run/xxx/ptms.pid)
kill -9 $PID

      這裡我是將兩個shell檔案與jar包放在同一目錄下

      ③在/usr/lib/systemd/system目錄下,新增ptms.service服務

[Unit]
Description=ptms server
Documentation=
Before=
After=
Wants=
#Request=

[Service]
Type=forking
WorkingDirectory=/usr/local/xxx/ptms
PermissionsStartOnly=true
ExecStart=/usr/local/xxx/ptms/ptms-start.sh

KillMode=process
ExecStop=/usr/local/xxx/ptms/ptms-stop.sh
PrivateTmp=true

Restart=always
RestartSec=2s

LimitCORE=infinity

[Install]
WantedBy=multi-user.target

④即可使用如下命令管理服務

system start xxx
systemctl stop xxx 
system restart xxx
systemctl enable xxx 

遇到問題

1、Failed at step EXEC spawning /usr/local/yealink/ptms/ptms-start.sh: Permission denied

原因是沒有執行sh檔案的許可權,這裡通過chmod 777 ptms-start.sh給相應的檔案賦予最高許可權即可。

 

2、 Failed at step EXEC spawning /usr/local/yealink/ptms/ptms.sh: No such file or directory

遇到sh檔案找不到,但是確實路徑又沒錯的情況,可以試著直接./ptms-start.sh執行sh檔案,看看會不會報錯:bad interpreter: No such file or directory,如果會基本就是這個sh檔案格式的問題。

原因在於在window下編輯shell檔案,換行符是不一樣的,會產生不可見字元。我確實有把sh檔案在window系統開啟編輯過,此時在傳到Linux系統上格式就會發生變化,在Linux上本來應該是unix的,但發現卻是dos格式的。解決辦法就是在linux上修改shell檔案格式為unix即可。

①首先,vi開啟shell檔案,執行:set ff,回車,檢視當前的格式

②執行:set ff=unix,將格式轉為unix

再次檢視檔案,發現就變為unix的了

③最後儲存並退出即可。