通用程序部署脚本

发布时间 2023-03-22 21:16:27作者: 黄河大道东
#!/bin/bash

cmd_bin="java | python |node | shell"
cmd_bin_option=""
app_path="java.jar | app.py |index.js | shell.sh"
app_port=5000

run_app() {
  pid=$(ss -ntlp | grep $app_port | awk '{print $6}' | awk -F'=' '{print $2}' | awk -F',' '{print $1}')
  if [ -z "$pid" ]; then
    nohup $cmd_bin $cmd_bin_option $app_path $app_port > log.log 2>&1 &
    echo "启动成功"
  else
    echo "程序已经运行,pid=$pid)"
  fi
}

stop_app() {
  pid=$(ss -ntlp | grep $app_port | awk '{print $6}' | awk -F'=' '{print $2}' | awk -F',' '{print $1}')
  if [ -z "$pid" ]; then
    echo "停止成功"
  else
    kill -15 "$pid"
    echo "pid=$pid,停止成功"
  fi
}

restart_app() {
  stop_app
  run_app
}

status_app() {
  pid=$(ss -ntlp | grep $app_port | awk '{print $6}' | awk -F'=' '{print $2}' | awk -F',' '{print $1}')
  if [ -z "$pid" ]; then
    echo "程序未运行"
  else
    echo "app is running,pid=$pid"
  fi
}

case $1 in
"run")
  run_app
  ;;
"stop")
  stop_app
  ;;
"restart")
  restart_app
  ;;
"status")
  status_app
  ;;
*)
  echo 'You must select [ run | stop | restart | status ]'
  ;;
esac