1. #!/bin/bash
    2. #
    3. function USAGE {
    4. echo -e "\033[31m脚本名称: \033[37m"
    5. echo " $0"
    6. echo -e "\033[31m语法结构: \033[37m"
    7. echo " $0 {nginx|tomcat|*service} {start|stop|restart|status}"
    8. echo -e "\033[31m使用范例: \033[37m"
    9. echo " $0 nginx start"
    10. echo " $0 tomcat restart"
    11. echo " $0 vin-service status"
    12. echo -e "\033[31m注意事项: \033[37m"
    13. echo " 1. 该脚本管理的目录必须遵循如下规则:"
    14. echo " a) nginx 部署路径必须能够通过 /usr/local/nginx 访问到"
    15. echo " b) tomcat 部署路径必须能够通过 /usr/local/tomcat 访问到"
    16. echo " c) service 类服务的部署路径必须能够通过 /home/apps/service类项目名/current/ 访问到"
    17. echo " d) Bootstrap 类服务的部署路径必须能够通过 /home/apps/类项目名/current/ 访问到"
    18. echo " 2. \$1(服务类型)和\$2(操作)参数必须存在"
    19. exit 2
    20. }
    21. function CAT_FUWU {
    22. if [ -z "$PID" ];then
    23. case $SIGNAL in
    24. start|restart)
    25. echo "正在启动 $FUWU 服务"
    26. ;;
    27. stop)
    28. echo "$FUWU 服务已经关闭"
    29. exit
    30. ;;
    31. status)
    32. echo "$FUWU 服务处于关闭"
    33. ;;
    34. esac
    35. else
    36. case $SIGNAL in
    37. start)
    38. echo "$FUWU 服务已经开启"
    39. exit 0
    40. ;;
    41. stop|restart)
    42. echo "你所要杀掉的 $FUWU 服务对应的进程号为 $PID"
    43. ;;
    44. status)
    45. echo "$FUWU 服务目前正在运行,对应的进程号为 $PID"
    46. ;;
    47. esac
    48. fi
    49. }
    50. function KILL_FUWU {
    51. for ((i=1; i<=3; i++))
    52. do
    53. if [[ $PID != "" ]];then
    54. for i in $PID;do
    55. kill -15 $PID >/dev/null 2>&1
    56. sleep 5
    57. done
    58. else
    59. break
    60. fi
    61. done
    62. kill -9 $PID >/dev/null 2>&1
    63. }
    64. function START_NGINX {
    65. /usr/local/nginx/sbin/nginx >&/dev/null
    66. PID=`ps -ef|awk '$0~"nginx"&&$0~"master"&&$0!~"awk"{print $2}'`
    67. echo "$FUWU 服务已经启动,它所对应的进程号为 $PID"
    68. }
    69. function START_TOMCAT {
    70. sudo -u nobody /bin/bash /usr/local/tomcat/bin/startup.sh >& /dev/null
    71. PID=`ps aux|awk '$0~"java"&&$0~"tomcat"&&$0!~"awk"{print $2}'`
    72. echo "$FUWU 服务已经启动,它所对应的进程号为 $PID"
    73. }
    74. function START_SERVICE {
    75. sudo -u nobody /bin/bash /home/apps/$FUWU/current/startup.sh >&/dev/null &
    76. if `hostname|grep -q autorepair`;then
    77. sleep 120
    78. else
    79. sleep 20
    80. fi
    81. PID=`ps -ef|awk '$0~"'$FUWU'"&&$0~"jar"&&$0!~"awk"{print $2}'`
    82. echo "$FUWU 服务已经启动,它所对应的进程号为 $PID"
    83. }
    84. function FUWU_LIST {
    85. case $SIGNAL in
    86. start)
    87. CAT_FUWU
    88. $1
    89. ;;
    90. stop)
    91. CAT_FUWU
    92. KILL_FUWU
    93. ;;
    94. restart)
    95. CAT_FUWU
    96. KILL_FUWU
    97. $1
    98. ;;
    99. status)
    100. CAT_FUWU
    101. ;;
    102. *)
    103. USAGE
    104. ;;
    105. esac
    106. }
    107. function NGINX {
    108. PID=`ps -ef|awk '$0~"nginx"&&$0~"master"&&$0!~"awk"{print $2}'`
    109. FUWU_LIST START_NGINX
    110. }
    111. function TOMCAT {
    112. PID=`ps aux|awk '$0~"java"&&$0~"tomcat"&&$0!~"awk"{print $2}'`
    113. FUWU_LIST START_TOMCAT
    114. }
    115. function Bootstrap {
    116. #if [ ! -f /usr/local/scripts/bootstrap.sh ] ; then
    117. if [ ! -f /home/apps/bootstrap/current/bin/bootstrap.sh ];then
    118. USAGE
    119. fi
    120. PID=`ps -ef|awk '$0~"'$FUWU'"&&$0~"jar"&&$0!~"awk"{print $2}'`
    121. FUWU_LIST START_SpringBoot
    122. }
    123. function SERVICE {
    124. if [ ! -f /home/apps/$FUWU/current/startup.sh ];then
    125. USAGE
    126. fi
    127. PID=`ps -ef|awk '$0~"'$FUWU'"&&$0~"jar"&&$0!~"awk"{print $2}'`
    128. FUWU_LIST START_SERVICE
    129. }
    130. function START_SpringBoot {
    131. cd /home/apps/bootstrap/current
    132. #sudo -u nobody nohup /bin/bash bootstrap.sh restart >& /dev/null
    133. sudo -unobody /bin/bash bin/bootstrap.sh restart
    134. PID=`ps -ef|awk '$0~"'$FUWU'"&&$0~"jar"&&$0!~"awk"{print $2}'`
    135. echo "$FUWU 服务已经启动,它所对应的进程号为 $PID"
    136. }
    137. if [ $# -lt 2 ];then
    138. USAGE
    139. fi
    140. FUWU=$1
    141. SIGNAL=$2
    142. case $1 in
    143. nginx)
    144. NGINX
    145. ;;
    146. tomcat)
    147. TOMCAT
    148. ;;
    149. *service)
    150. SERVICE
    151. ;;
    152. bootstrap)
    153. Bootstrap
    154. ;;
    155. *)
    156. USAGE
    157. ;;
    158. esac