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判断,就可实现。这里就不写更新了

  • 相关阅读:
    UOJ.26.[IOI2014]Game(交互 思路)
    Good Bye 2016 F.New Year and Finding Roots(交互)
    Codeforces.835E.The penguin's game(交互 按位统计 二分)
    Codeforces.744B.Hongcow's Game(交互 按位统计)
    Codeforces.862D.Mahmoud and Ehab and the binary string(交互 二分)
    正睿OI 提高 Day1T3 ZYB玩字符串(DP)
    划分vlan
    2三层交换机实现vlan间的路由
    交换机基础-交换机远程telnet
    自动化运维环境的搭建问题处理
  • 原文地址:https://www.cnblogs.com/landhu/p/5206362.html
Copyright © 2011-2022 走看看