場景:jar包為例,war包是類似的;一個目錄中只有一個jar包,需要在jar包的同級目錄下,一個腳本實現jar包的啟停管理。
如有其他場景需要方法,請留言。
#!/bin/bash # 下面一行是先獲取當前路徑,慣用寫法 work_dir=$(cd `dirname $0`; pwd) # 判斷jar包,當前目錄下只能有一個jar包存在,如果不是則報錯 jar_num=`ls ${work_dir}/*.jar | wc -l` if [ ${jar_num} -eq 0 ];then echo "Error: Can not find jar package in this jar home;please check!" exit 1 elif [ ${jar_num} -gt 1 ];then echo "Error: Find other jar package in this jar home; please check!" exit 1 fi jar_name=`ls ${work_dir}/*.jar`
# 下面內容是服務執行部分 case "$1" in start) cd ${work_dir}
# jar啟動命令,可根據實際情況修改 nohup java -Xms1024m -Xmx1024m -jar ${jar_name} >/dev/null 2>&1 & sleep 3 echo "service ${jar_name} start" ;; stop)
# 獲取jar包的pid;以下是centos7的寫法;其他操作系統可自行定義 svc_pid=`ps -ef | grep ${jar_name} | grep -v grep | awk '{print $2}'` len_pid=`echo ${svc_pid}|wc -c` if [ ${len_pid} -le 2 ];then echo "No need stop service ${jar_name}" else kill -9 ${svc_pid} sleep 3 echo "service ${jar_name} stopd" fi ;; restart) $0 stop sleep 2 $0 start ;; *) ## restart $0 stop sleep 2 $0 start ;; esac
使用方法:
將上面的內容寫到腳本文件,如boot.sh
啟動:[腳本路徑]/boot.sh start
重啟:[腳本路徑]/boot.sh restart 或者:[腳本路徑]/boot.sh
停止:[腳本路徑]/boot.sh stop