#!/bin/bash#function USAGE { echo -e "\033[31m脚本名称: \033[37m" echo " $0" echo -e "\033[31m语法结构: \033[37m" echo " $0 {nginx|tomcat|*service} {start|stop|restart|status}" echo -e "\033[31m使用范例: \033[37m" echo " $0 nginx start" echo " $0 tomcat restart" echo " $0 vin-service status" echo -e "\033[31m注意事项: \033[37m" echo " 1. 该脚本管理的目录必须遵循如下规则:" echo " a) nginx 部署路径必须能够通过 /usr/local/nginx 访问到" echo " b) tomcat 部署路径必须能够通过 /usr/local/tomcat 访问到" echo " c) service 类服务的部署路径必须能够通过 /home/apps/service类项目名/current/ 访问到" echo " d) Bootstrap 类服务的部署路径必须能够通过 /home/apps/类项目名/current/ 访问到" echo " 2. \$1(服务类型)和\$2(操作)参数必须存在" exit 2}function CAT_FUWU { if [ -z "$PID" ];then case $SIGNAL in start|restart) echo "正在启动 $FUWU 服务" ;; stop) echo "$FUWU 服务已经关闭" exit ;; status) echo "$FUWU 服务处于关闭" ;; esac else case $SIGNAL in start) echo "$FUWU 服务已经开启" exit 0 ;; stop|restart) echo "你所要杀掉的 $FUWU 服务对应的进程号为 $PID" ;; status) echo "$FUWU 服务目前正在运行,对应的进程号为 $PID" ;; esac fi}function KILL_FUWU { for ((i=1; i<=3; i++)) do if [[ $PID != "" ]];then for i in $PID;do kill -15 $PID >/dev/null 2>&1 sleep 5 done else break fi done kill -9 $PID >/dev/null 2>&1}function START_NGINX { /usr/local/nginx/sbin/nginx >&/dev/null PID=`ps -ef|awk '$0~"nginx"&&$0~"master"&&$0!~"awk"{print $2}'` echo "$FUWU 服务已经启动,它所对应的进程号为 $PID"}function START_TOMCAT { sudo -u nobody /bin/bash /usr/local/tomcat/bin/startup.sh >& /dev/null PID=`ps aux|awk '$0~"java"&&$0~"tomcat"&&$0!~"awk"{print $2}'` echo "$FUWU 服务已经启动,它所对应的进程号为 $PID"}function START_SERVICE { sudo -u nobody /bin/bash /home/apps/$FUWU/current/startup.sh >&/dev/null & if `hostname|grep -q autorepair`;then sleep 120 else sleep 20 fi PID=`ps -ef|awk '$0~"'$FUWU'"&&$0~"jar"&&$0!~"awk"{print $2}'` echo "$FUWU 服务已经启动,它所对应的进程号为 $PID"}function FUWU_LIST { case $SIGNAL in start) CAT_FUWU $1 ;; stop) CAT_FUWU KILL_FUWU ;; restart) CAT_FUWU KILL_FUWU $1 ;; status) CAT_FUWU ;; *) USAGE ;; esac}function NGINX { PID=`ps -ef|awk '$0~"nginx"&&$0~"master"&&$0!~"awk"{print $2}'` FUWU_LIST START_NGINX}function TOMCAT { PID=`ps aux|awk '$0~"java"&&$0~"tomcat"&&$0!~"awk"{print $2}'` FUWU_LIST START_TOMCAT}function Bootstrap { #if [ ! -f /usr/local/scripts/bootstrap.sh ] ; then if [ ! -f /home/apps/bootstrap/current/bin/bootstrap.sh ];then USAGE fi PID=`ps -ef|awk '$0~"'$FUWU'"&&$0~"jar"&&$0!~"awk"{print $2}'` FUWU_LIST START_SpringBoot}function SERVICE { if [ ! -f /home/apps/$FUWU/current/startup.sh ];then USAGE fi PID=`ps -ef|awk '$0~"'$FUWU'"&&$0~"jar"&&$0!~"awk"{print $2}'` FUWU_LIST START_SERVICE}function START_SpringBoot { cd /home/apps/bootstrap/current #sudo -u nobody nohup /bin/bash bootstrap.sh restart >& /dev/null sudo -unobody /bin/bash bin/bootstrap.sh restart PID=`ps -ef|awk '$0~"'$FUWU'"&&$0~"jar"&&$0!~"awk"{print $2}'` echo "$FUWU 服务已经启动,它所对应的进程号为 $PID"}if [ $# -lt 2 ];then USAGEfiFUWU=$1SIGNAL=$2case $1 innginx) NGINX;;tomcat) TOMCAT;;*service) SERVICE;;bootstrap) Bootstrap;;*) USAGE;;esac