jar包註冊到Linux服務
阿新 • • 發佈:2018-11-29
1.編寫服務指令碼
只需要設定前面幾個變數,其餘的無需改動。
BASE_DIR:程式所在目錄
JAR_NAME:程式名稱
START_COMMAND:啟動命令
LOG_DIR:日誌目錄
#!/bin/bash #chkconfig: 345 80 90 #description:message_server BASE_DIR=/home/data/message_server JAR_NAME=message_server START_COMMAND="java -jar $BASE_DIR/$JAR_NAME.jar server " PID_FILE=$BASE_DIR/$JAR_NAME.pid LOG_DIR=$BASE_DIR/logs start() { PID=`$START_COMMAND > $LOG_DIR/init.log 2>$LOG_DIR/init.error.log & echo $!` } case "$1" in start) if [ -f $PID_FILE ]; then PID=`cat $PID_FILE` if [ -z "`ps axf | grep ${PID} | grep -v grep`" ]; then start else echo "Already running [$PID]" exit 0 fi else start fi if [ -z $PID ]; then echo "Failed starting" exit 1 else echo $PID > $PID_FILE echo "Started [$PID]" exit 0 fi ;; status) if [ -f $PID_FILE ]; then PID=`cat $PID_FILE` if [ -z "`ps axf | grep ${PID} | grep -v grep`" ]; then echo "Not running (process dead but PID file exists)" exit 1 else echo "Running [$PID]" exit 0 fi else echo "Not running" exit 0 fi ;; stop) if [ -f $PID_FILE ]; then PID=`cat $PID_FILE` if [ -z "`ps axf | grep ${PID} | grep -v grep`" ]; then echo "Not running (process dead but PID file exists)" rm -f $PID_FILE exit 1 else PID=`cat $PID_FILE` kill -term $PID echo "Stopped [$PID]" rm -f $PID_FILE exit 0 fi else echo "Not running (PID not found)" exit 0 fi ;; restart) $0 stop $0 start ;; *) echo "Usage: $0 {status|start|stop|restart}" exit 0 esac
2.存放指令碼
將寫好的指令碼命名為想啟動的名稱,我這裡命名為jar包名稱message_server。放到init.d 目錄下。檢視檔案有沒有執行許可權,如果沒有賦予執行許可權,簡單的操作是執行chmod 777 /etc/init.d/[檔名] 來賦予執行許可權。start|stop 這些命令引數,其實都是在上面的指令碼中自定義的,可以隨意寫成其他的自定義字串,那只是一個名字。
3.自動補全功能實現
如果想用類似service message_server start 這樣的不需要具體路徑也可以自動tab鍵補全命令的方式進行啟動,執行一下
complete -W "$(ls /etc/init.d/)" service
4.開機自啟動
chkconfig --add message_server
如果 提示服務不支援chkconfig 是因為在指令碼中未新增如下設定
#chkconfig: 345 80 60
#description:message_server
上面指令碼中 第一個引數 345 對應的是Linux的的runlevel,意思是在345runlevel下服務會被啟動
7個執行級別分別是
執行級別0:系統停機狀態,系統預設執行級別不能設為0,否則不能正常啟動
執行級別1:單使用者工作狀態,root許可權,用於系統維護,禁止遠端登陸
執行級別2:多使用者狀態(沒有NFS)
執行級別3:完全的多使用者狀態(有NFS),登陸後進入控制檯命令列模式
執行級別4:系統未使用,保留
執行級別5:X11控制檯,登陸後進入圖形GUI模式
執行級別6:系統正常關閉並重啟,預設執行級別不能設為6,否則不能正常啟動
第二個和第三個引數分別代表著啟動優先順序和關閉優先順序 數字大優先順序高。