shell:統一管理jar包啓動腳本,控制檯指定輸出

1.在企業級開發中,公司有多個javaee項目,怎麼優雅得管理啓動這些應用呢?

2.一般操作: 

  • java -jar xxxx.jar
  • nohup java -jar xxx.jar >> /home/logs/appname/xxx.log 2>&
  • tail 10 xxx.log

3.shell腳本

  • sh 執行shell腳本指令
  • operate第一個參數 start|stop|status|restart|reload
  • appname第二個參數 表示啓動的應用名前綴
  • nohup java -jar xxx.jar >> /home/logs/appname/xxx.log 2>& 啓動命令,將控制檯輸出到指定目錄(即sh st.sh start appname指令
  • tail 10 xxx.log 查看輸入的控制檯信息(即sh st.sh status appname指令
  • kill -9 pid 結束應用(即sh st.sh stop appname指令

#!/bin/bash
operate=${1}
appname=${2}
APP_NAME="dylan"
echo "(ps -aef | grep '$2-0.0.1-SNAPSHOT.jar' | grep -v grep | awk '{print $2}')"
pid=$(ps -aef | grep $2-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}')
echo "$appname pid is $pid."
startJXF(){
  if [ "$pid" == ""  ]; then
        echo -n "$APP_NAME starting: "
        nohup java -jar /home/tools/$appname-0.0.1-SNAPSHOT.jar >> /home/logs/$appname/start.log 2>&1&
  else
        echo "can't start $appname : $appname is running."
        echo -e ""
        exit 1
  fi
}

stopJXF(){
  if [ "$pid" == ""  ]; then
        echo "can't start $appname : $appname is not start."
        echo -e ""
        exit 1
  else
        echo -n "$APP_NAME stoping: "
        kill -9 $pid
        echo -e ""
        exit 1
  fi
}

reloadJXF(){
  if [ "$pid" == ""  ]; then
        echo "can't start $appname : $appname is not start."
        nohup java -jar /home/tools/$appname-0.0.1-SNAPSHOT.jar >> /home/logs/$appname/start.log 2>&1&
        echo -e ""
        exit 1
  else
        echo -n "$APP_NAME reloading: "
        kill -9 $pid
        nohup java -jar /home/tools/$appname-0.0.1-SNAPSHOT.jar >> /home/logs/$appname/start.log 2>&1&
        echo -e ""
        exit 1
  fi
}

logJXF(){
  if [ "$pid" == ""  ]; then
        echo "can't start $appname : $appname is not start."
        echo -e ""
        exit 1
  else
        echo -n "$APP_NAME reloading: "
        tail -f /home/logs/$appname/start.log
        echo -e ""
        exit 1
  fi
}


case "$operate" in
    start)
        startJXF
        ;;
    stop)
        stopJXF
        ;;
    reload|restart)
        reloadJXF
        ;;
    status)
        logJXF
        ;;
    *)
        echo -e "Usage params: start|stop|status|restart|reload"
        ;;
esac
exit 0

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章