zoukankan      html  css  js  c++  java
  • linux 程序启动与停止管理脚本

    公司接了一个第三方的系统,基于linux写的几个程序,一共有9个部件,第三方没有给脚本,每次启动或停止都得一个一个手工去停止或修改.......,这里稍微鄙视下。

    没办法,求人还不如自己动手写,

    需求简单:就是将这9个部件同时管理,可以启动与停止,可以查看当前是否运行。

    脚本如下

    #!/bin/bash
    . /etc/init.d/functions
    
    devsNum=`ps -eo comm,pid|awk '/sdk_devs/'|wc -l`
    gatewayNum=`ps -eo comm,pid|awk '/sdk_gateway/'|wc -l`
    live_serverNum=`ps -eo comm,pid|awk '/sdk_live/'|wc -l`
    nvr_Num=`ps -eo comm,pid|awk '/sdk_nvr/'|wc -l`
    oss_Num=`ps -eo comm,pid|awk '/sdk_oss/'|wc -l`
    portalNum=`ps -eo comm,pid|awk '/portal_ds6/'|wc -l`
    rec_serverNum=`ps -eo comm,pid|awk '/sdk_rec/'|wc -l`
    xhome_ssNum=`ps -eo comm,pid|awk '/xhome_ss/'|wc -l`
    
    #echo $devsNum $gatewayNum $live_serverNum $nvr_Num $oss_Num $portalNum $rec_serverNum $xhome_ssNu
    
    
    
    status()
    {
       output='printf "%-11s is Running and PID is %6s
    "'
       [ $devsNum  -eq 1 ] && printf "%-11s is Running and PID is %6s
    "  "dev" "`ps -eo comm,pid|awk '/sdk_devs/{print $2}'`" || echo "dev is not Run"
       [ $gatewayNum -eq 1 ] && printf "%-11s is Running and PID is %6s
    " "gateway" "`ps -eo comm,pid|awk '/sdk_gateway/{print $2}'`" || echo "gateway is not Run"
       [ $live_serverNum -eq 1 ] && printf "%-11s is Running and PID is %6s
    " "live_server" "`ps -eo comm,pid|awk '/sdk_live/{print $2}'`" || echo "live_server is not Run"
       [ $nvr_Num -eq 1  ] && printf "%-11s is Running and PID is %6s
    " "nvr" "`ps -eo comm,pid|awk '/sdk_nvr/{print $2}'`" || echo "Nvr is not Run"
       [ $oss_Num -eq 1  ] && printf "%-11s is Running and PID is %6s
    " "oss" "`ps -eo comm,pid|awk '/sdk_oss/{print $2}'`" || echo "oss is not Run"
       [ $portalNum -eq 1  ] && printf "%-11s is Running and PID is %6s
    " "portal"  "`ps -eo comm,pid|awk '/portal_ds6$?/{print $2}'`" || echo "portal is not Run"
       [ $rec_serverNum -eq 1  ] && printf "%-11s is Running and PID is %6s
    " "rec_server"  "`ps -eo comm,pid|awk '/sdk_rec/{print $2}'`" || echo "rec_server is not Run"
       [ $xhome_ssNum -eq 1  ] && printf "%-11s is Running and PID is %6s
    " "ss"  "`ps -eo comm,pid|awk '/xhome_ss/{print $2}'`" || echo "ss is not Run"
       [ `ps -e|awk '/report/'|wc -l` -eq 2 ] && printf "%-11s is Running and PID is %6s
    " "report" "`ps -e|awk '/report/{printf("%s ",$1)}'`" || echo "report is not Run"
    }
    
    start()
    {
      #start devs
       if [ $devsNum -eq 1  ];then
         echo "dev Server is already Running"
       else
         cd devs
          chmod +x sdk_devs_351 
         ./sdk_devs_351  --Ice.Config=xhome_webdev.conf  -s -d  >& /dev/null &
       [ $? -eq 0  ] && action "Starting dev Sucessfull" /bin/true || action "Starting Failed" /bin/false
        cd ..
      fi
    
     #start gateway
      if [ $gatewayNum -eq 1  ];then
        echo "gateway Server is already Running"
      else
        cd gateway
        chmod +x sdk_gateway_ice351
        ./sdk_gateway_ice351 -s -d -alarmvideo >& /dev/null &
        [ $? -eq 0 ] && action "Starting gateway Sucessfull" /bin/true || action "Starting Failed" /bin/false
        cd ..
      fi
    
    
     #Start live_server
      if [ $live_serverNum -eq 1  ];then
        echo "live_Server is already Running "
      else
        cd  live_server
        chmod +x sdk_live_server_ice351
        ./sdk_live_server_ice351 -s -d  >& /dev/null &
        [ $? -eq 0 ] && action "Starting live_server Sucessfull" /bin/true || action "Starting Failed" /bin/false
        cd ..
      fi
        
     
     #Start nvr Server
     if [ $nvr_Num -eq 1 ];then
        echo "nvr_Server is already Running "
      else
        cd nvr
        chmod +x sdk_nvr_write 
        ./sdk_nvr_write -s -d >& /dev/null &
        [ $? -eq 0 ] && action "Starting nvr_server Sucessfull" /bin/true || action "Starting Failed" /bin/false
        cd ..
      fi
    
     #start oss server
      if [ $oss_Num -eq 1  ];then
        echo "oss_Server is already Running "
      else
        cd oss_server/
         chmod +x sdk_oss_server_ice351
        ./sdk_oss_server_ice351  --Ice.Config=oss_server.conf  -s -d  >& /dev/null &
        [ $? -eq 0 ] && action "Starting oss_server Sucessfull" /bin/true || action "Starting Failed" /bin/false
        cd ..
      fi
    
     #start portal
       if [ $portalNum -eq 1  ];then
        echo "portal_Server is already Running "
      else
        cd portal/
        chmod +x portal_ds60_ice351
        ./portal_ds60_ice351  -s -d&  -s -d  >& /dev/null &
        [ $? -eq 0 ] && action "Starting portal Sucessfull" /bin/true || action "Starting Failed" /bin/false
        cd ..
      fi
    
     #start rec_server
        if [ $rec_serverNum -eq 1  ];then
        echo "rec_Server is already Running "
      else
        cd rec_server/
        chmod +x sdk_rec_server_ice351
        ./sdk_rec_server_ice351  any 1088 112.74.75.20 123  >& /dev/null &
        [ $? -eq 0 ] && action "Starting rec_server Sucessfull" /bin/true || action "Starting Failed" /bin/false
       cd ..
      fi
    
     #start ss_server
        if [ $xhome_ssNum -eq 1  ];then
        echo "ss_server is already Running "
      else
        cd ss
        chmod +x xhome_ss
         ./xhome_ss -s -d >& /dev/null &
        [ $? -eq 0 ] && action "Starting ss_server Sucessfull" /bin/true || action "Starting Failed" /bin/false
       cd ..
      fi
    
    #start report
     ./report
     
    }
    
    stop()
    {
      #stop dev
      killall -9 sdk_devs_351 >& /dev/null
      [ $? -eq 0 ] && action "stop dev" /bin/true || action "stop dev" /bin/false
      
      #stop gateway
      killall -9 sdk_gateway_ice351 &> /dev/null
      [ $? -eq 0 ] && action "stop gateway" /bin/true || action "stop gateway" /bin/false
    
      #stop live_server
      killall -9 sdk_live_server_ice351 &> /dev/null
      [ $? -eq 0 ] && action "stop live_server" /bin/true || action "stop live_server" /bin/false
    
      #stop nvr
      killall sdk_nvr_write &> /dev/null
       [ $? -eq 0 ] && action "stop nvr" /bin/true || action "stop nvr" /bin/false
      #stop oss
      killall -9 sdk_oss_server_ice351 >& /dev/null 
      [ $? -eq 0 ] && action "stop oss" /bin/true || action "stop oss" /bin/false
      #stop portal
      killall portal_ds6$?_ice351 >& /dev/null
      [ $? -eq 0 ] && action "stop portal" /bin/true || action "stop portal" /bin/false
      #stop rec_server
      killall -9 sdk_rec_server_ice351 &> /dev/null
      [ $? -eq 0 ] && action "stop rec_server" /bin/true || action "stop rec_server" /bin/false
      #stop ss
      killall -9 xhome_ss &> /dev/null
      [ $? -eq 0 ] && action "stop ss" /bin/true || action "stop ss" /bin/false
      #stop report
       killall -9 node_report &> /dev/null
       [ $? -eq 0 ] && action "stop report" /bin/true || action "stop ss" /bin/false
      
    
    }
    
     
    
    case $1 in 
     start)
          start
          ;;
     stop)
          stop
          ;;
     status)
         status
         ;;
     *)
       echo "Usage $0 {start|stop|status}"
       exit 0
    esac

    运行如下:

    [root@iZ94nv1rj5tZ xhome]# ./dianShiServer.sh status
    dev         is Running and PID is  12872
    gateway is not Run
    live_server is Running and PID is  12878
    nvr         is Running and PID is  12881
    oss         is Running and PID is  12884
    portal      is Running and PID is  10802
    rec_server  is Running and PID is  12891
    ss          is Running and PID is  12894
    report      is Running and PID is 16284 16285 
    [root@iZ94nv1rj5tZ xhome]# ./dianShiServer.sh start
    dev Server is already Running
    Starting gateway Sucessfull [  OK  ]
    live_Server is already Running 
    nvr_Server is already Running 
    oss_Server is already Running 
    portal_Server is already Running 
    rec_Server is already Running 
    ss_server is already Running 
    node_report: no process killed
    start report sucessfull

    在实际使用时,发现不能单独对一个部件进行操作,

    只要在case中嵌套if判断,就可实现。这里就不写更新了

  • 相关阅读:
    京东咚咚架构演讲读后感
    京东峰值系统设计读后感
    游戏服务器的架构演讲读后感
    菜鸟弹性调度系统的架构设计读后感
    阿里如何实现秒级百万TPS?搜索离线大数据平台架构解读读后感
    阿里游戏高可用架构设计实践读后感
    淘宝架构背后——零售业务中台架构设计探讨及实践读后感
    本地存储的时候需要类型转换
    禁止输入框显示用户历史输入历史记录
    项目必备!永无 bug 注释
  • 原文地址:https://www.cnblogs.com/landhu/p/5206362.html
Copyright © 2011-2022 走看看