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