【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的了
③最後儲存並退出即可。