phoenix_agent.sh 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. #!/usr/bin/env bash
  2. #包名
  3. packageName="phoenix-agent.jar"
  4. #程序名
  5. programName="phoenix-agent"
  6. #检测状态
  7. function status() {
  8. echo "---------------------------------------检测状态---------------------------------------"
  9. pid=$(ps -ef | grep -n ${packageName} | grep -v grep | awk '{print $2}')
  10. if [ ${pid} ]; then
  11. echo "${programName}正在运行,进程ID:${pid}"
  12. else
  13. echo "${programName}未运行!"
  14. fi
  15. }
  16. #停止程序
  17. function stop() {
  18. echo "---------------------------------------停止程序---------------------------------------"
  19. #打印出当前的进程,grep -v grep 去掉grep进程
  20. pid=$(ps -ef | grep -n ${packageName} | grep -v grep | awk '{print $2}')
  21. #查询进程个数:wc -l 返回行数
  22. count=$(ps -ef | grep -n ${packageName} | grep -v grep | wc -l)
  23. echo "${programName}进程ID:$pid,进程个数:$count"
  24. #关闭进程
  25. if (($count > 0)); then
  26. kill $pid
  27. else
  28. echo "${programName}未运行!"
  29. exit 0
  30. fi
  31. #打印关掉的进程ID
  32. echo "关闭进程:$pid"
  33. count=$(ps -ef | grep -n ${packageName} | grep -v grep | wc -l)
  34. sec=5
  35. sum=12
  36. #开始一个循环
  37. while (($sum > 0)); do
  38. if (($count > 0)); then
  39. #若进程还未关闭,则脚本sleep几秒
  40. sleep $sec
  41. count=$(ps -ef | grep -n ${packageName} | grep -v grep | wc -l)
  42. else
  43. #若进程已经关闭,则跳出循环
  44. echo "${programName}已经关闭!"
  45. break
  46. fi
  47. sum=$(($sum - 1))
  48. done
  49. #超时不能停止,强制杀掉进程
  50. if (($count > 0)); then
  51. kill -9 $pid
  52. echo "${programName}被强制关闭!"
  53. sleep 1
  54. fi
  55. }
  56. #启动程序
  57. function start() {
  58. echo "---------------------------------------启动程序---------------------------------------"
  59. pid=$(ps -ef | grep -n ${packageName} | grep -v grep | awk '{print $2}')
  60. if [ ${pid} ]; then
  61. echo "${programName}正在运行,请先停止程序!"
  62. else
  63. #启动进程
  64. nohup java -jar ${packageName} --spring.profiles.active=prod >/dev/null 2>&1 &
  65. pid=$(ps -ef | grep -n ${packageName} | grep -v grep | awk '{print $2}')
  66. if [ ${pid} ]; then
  67. echo "${programName}已经启动,进程ID为:$pid"
  68. else
  69. #等待5秒
  70. sleep 5
  71. pid=$(ps -ef | grep -n ${packageName} | grep -v grep | awk '{print $2}')
  72. if [ !${pid} ]; then
  73. echo "${programName}启动失败!"
  74. fi
  75. fi
  76. fi
  77. }
  78. #启动时带参数,根据参数执行
  79. if [ ${#} -ge 1 ]; then
  80. case ${1} in
  81. "start")
  82. start
  83. ;;
  84. "restart")
  85. stop
  86. start
  87. ;;
  88. "stop")
  89. stop
  90. ;;
  91. "status")
  92. status
  93. ;;
  94. *)
  95. echo "${1}无任何操作"
  96. ;;
  97. esac
  98. else
  99. echo "
  100. start:启动
  101. stop:停止
  102. restart:重启
  103. status:检查状态
  104. 示例命令如:./phoenix_agent start
  105. "
  106. fi