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
发布了65 篇原创文章 · 获赞 66 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44096448/article/details/104925891