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