線上多服務管理工具實例剖析

原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://nolinux.blog.51cto.com/4824967/1583156

       公司線上對nginx、tomcat和jar包的java應用的服務管理腳本之前都是單獨分離開的,這樣子就造成了運維人員在跳板機上進行服務管理的時非常的不方便。特別是把這些服務管理框架納入到自動化管理平臺時,沒有一個統一的服務管理接口去使用。

       因此,在空的時候,我就將多個服務的管理腳本融合在了一起,將他做成一個工具,這樣子就減少了服務管理的雜亂。

       廢話不說了,下面就是腳本內容,文章結尾我會簡單介紹該腳本的思路。

#!/bin/bash
#
# 本腳本用來對系統上的多服務進行管理操作
# 目前僅支持nginx、tomcat和jar包類的java應用進行管理操作
# Written by sunsky
# Mail : 274546888@qq.com
# Date : 2014-11-26 15:00:00
#
  
function USAGE {
    echo -e "33[31m腳本名稱: 33[37m"
    echo "    $0"
    echo -e "33[31m語法結構: 33[37m"
    echo "    $0 {nginx|tomcat|*service} {start|stop|restart|status}"
    echo -e "33[31m使用范例: 33[37m"
    echo "    $0 nginx start"
    echo "    $0 tomcat restart"
    echo "    $0 vin-service status"
    echo -e "33[31m注意事項: 33[37m"
    echo "    1. 該腳本管理的目錄必須遵循如下規則:"
    echo "       a) nginx 部署路徑必須能夠通過 /usr/local/nginx 訪問到"
    echo "       b) tomcat 部署路徑必須能夠通過 /usr/local/tomcat 訪問到"
    echo "       c) service 類服務的部署路徑必須能夠通過 /home/apps/service類項目名/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 {
    if [[ $PID != "" ]];then
        for i in $PID;do
            kill $PID >/dev/null 2>&1
            sleep 3
            kill -9 $PID >/dev/null 2>&1
        done
    fi
}
 
function START_NGINX {
    /usr/local/nginx/sbin/nginx
    PID=`ps -ef|awk  '$0~"nginx"&&$0~"master"&&$0!~"awk"{print $2}'`
    echo "$FUWU 服務已經啟動,它所對應的進程號為 $PID"
}
 
function START_TOMCAT {
    /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 {
        /bin/bash /home/apps/$FUWU/current/startup.sh &
        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 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
}
 
if [ $# -lt 2 ];then
     USAGE
fi
 
FUWU=$1
SIGNAL=$2
 
case $1 in
nginx)
    NGINX
;;
tomcat)
    TOMCAT
;;
*service)
    SERVICE
;;
*)
    USAGE
;;
esac

        以上呢,就是整個腳本的內容了。

       在該腳本中,我將查看服務狀態信息、殺掉服務和服務管理動作的操作做成了可重用的函數,而對啟動每個應用的操作做成了單獨的模塊。雖然目前只是將nginx、tomcat和jar包類的java應用集成在了一起,但是后期如果有其它服務要加進來的話,也是非常的方便。

       下面對每個模塊簡單進行介紹:

USAGE          # 幫助模塊嘍
CAT_FUWU       # 用于在接收到用戶操作時,判斷服務當前狀態并給予正確相應
KILL_FUWU      # 負責殺掉服務的公共模塊
START_NGINX    # 負責啟動NGINX應用的模塊
START_TOMCAT   # 負責啟動TOMCAT應用的模塊
START_SERVICE  # 負責啟動JAR包類的JAVA應用的模塊
FUWU_LIST      # 負責響應單個服務操作的公共列表
NGINX          # 集合NGINX管理操作的模塊
TOMCAT         # 集合TOMCAT管理操作的模塊
SERVICE        # 集合JAR包類JAVA應用管理操作的模塊

    下面附上腳本的執行效果圖:

1.jpg

OK!以上就是腳本的內容,希望能對51博友有所幫助

轉自:http://nolinux.blog.51cto.com/4824967/1583156

原創文章,作者:s19930811,如若轉載,請注明出處:http://www.www58058.com/1932

(0)
s19930811s19930811
上一篇 2016-08-15 12:12
下一篇 2016-08-15 14:31

相關推薦

  • bash代碼注入的安全漏洞

           很多人或許對上半年發生的安全問題“心臟流血”(Heartbleed Bug)事件記憶頗深,這兩天,又出現了另外一個“毀滅級”的漏洞——Bash軟件安全漏洞。這個漏洞由法國GNU/Linux愛好者Stéphane Chazelas所發現。隨后,美國電腦緊急應變中心(US-CERT)、紅帽以及多家從事安全的公…

    Linux干貨 2015-03-30
  • 上篇博客簡單提了一下Nginx配置文件的大體組成部分,這次來好好解釋一下這些個配置文件。 一、main配置段 分類:    正常運行必備的配置    優化性能相關的配置    用于調試及定位問題相關的配置   …

    Linux干貨 2016-10-26
  • LVS小記

    19.LVS小記    LVS的類型:        nat:是一種基于IP的DNAT的,通過目標端口與目標地址利用特定的算法選取出響就的主機進行響應,通過RS(Real Server)的地址和端口進行轉發            特點:&n…

    2017-05-15
  • 馬哥linux0803作業內容

    1. 創建sysadmins組 將用戶user1,user2,user3加入sysadmins組中 將user3設置為sysadmins的管理員 用user3登錄,將user2從組中移除 設置sysadmins的密碼centos 設置user1 在創建新文件時,文件的所屬組為sysadmins 刪除user1…3 刪除sysadmins 2、三種權限rwx對…

    Linux干貨 2016-08-08
  • 走入系統命令

    一、inode節點號         在linux中,每一個文件都有唯一的inode號,inode號也是系統識別的唯一編碼,而文件名僅僅是為了使用者區分辨認, inode (index node )表中包含文件系統所有文件列表 一個節點(索引節點)是在一個表項,包含有關…

    2017-05-25
  • haproxy 監控配置

    方法一:在defaults段增加如下配置: stats refresh 30s #統計頁面自動刷新時間stats uri /stats #統計頁面urlstats realm baison-test-Haproxy #統計頁面密碼框上提示文本stats auth admin:admin123 #統計頁面用戶名和密碼設置stats hide-version #…

    Linux干貨 2018-03-19
欧美性久久久久