首页 > 系统相关 >制作Linux程序监控脚本

制作Linux程序监控脚本

时间:2023-04-03 11:03:06浏览次数:35  
标签:脚本 PRO stop cd guard cmms NAMES 监控 Linux

程序监控脚本

guard_cmms.sh

#!/bin/bash

#需要守护的进程数组,将需要守护的进程填入数组中,如 PRO_NAMES=(./bin/pro1 ./pro2 ) 表示要守护pro1、pro2 进程
PRO_NAMES=(
"maincmms"
"haikangaccessdevice" 
"dahuaaccessdevice"
)


#不保存控制台输出日志
OUTPUT="/dev/null"

#守护进程的数量
PRO_COUNT=${#PRO_NAMES[*]}

echo "PRO_COUNT = ${PRO_COUNT}"

start()
{
  while true ; do
       for ((i=0; i<${PRO_COUNT}; i++))
        do
        #  默认关闭日志输出
        #  OUTPUT="${PRO_NAMES[i]}.log"
        #    用ps获取$PRO_NAME进程数量
          NUM=`ps aux | grep ${PRO_NAMES[i]} | grep -v grep |wc -l`
          echo -e "####${PRO_NAMES[i]} \t pro_count = $NUM"
        #    少于1,重启进程
          if [ "${NUM}" -lt "1" ];then
                cd /opt/cvos/cmms
                nohup ./${PRO_NAMES[i]} >${OUTPUT} 2>&1 &
                cd -
        #    大于1,杀掉所有进程,重启
          elif [ "${NUM}" -gt "1" ];then
                echo "##### more than 1 ${PRO_NAMES[i]},killall ${PRO_NAMES[i]}}"
                killall  ${PRO_NAMES[i]}
                cd /opt/cvos/cmms
                nohup ./${PRO_NAMES[i]} >${OUTPUT} 2>&1 &
                cd -
          fi
        #    kill僵尸进程
          NUM_STAT=`ps aux | grep ${PRO_NAMES[i]} | grep T | grep -v grep | wc -l`

          if [ "${NUM_STAT}" -gt "0" ];then
                killall  ${PRO_NAMES[i]}
                cd /opt/cvos/cmms
                nohup ./${PRO_NAMES[i]} >${OUTPUT} 2>&1 &
                cd -
          fi

        done


    sleep 2
  done
}

stop()
{  
        for ((i=0; i<${PRO_COUNT}; i++))
        do

        killall ${PRO_NAMES[i]}

        done

}

case "$1" in 
 start)  
        start 
        ;; 
 stop)   
        stop 
        ;; 
 restart) 
         echo $"Restaring " 
         stop
   echo "stop over!" 
         sleep 1 
         start 
         ;; 
 *) 
        echo $"Usage: $0 {start|stop|restart}" 
        exit 1 
        ;; 
esac 
  
exit 0

服务启停脚本

#!/bin/bash
#chkconfig: 2345 80 90
#description:guard_cmms.sh

start()
{
  cd /opt/cvos/cmms/
  nohup ./guard_cmms.sh  start  > /dev/null 2>&1 &
  cd -
}

stop()
{
  cd /opt/cvos/cmms/
  killall guard_cmms.sh
  ./guard_cmms.sh  stop 
  cd -
}

restart()
{
  cd /opt/cvos/cmms
  nohup ./guard_cmms.sh restart  > /dev/null 2>&1 &
  cd -
}


case "$1" in 
 start)  
        start 
        ;; 
 stop)   
        stop 
        ;; 
 restart) 
  restart 
         ;; 
 *) 
        echo $"Usage: $0 {start|stop|restart}" 
        exit 1 
        ;; 
esac 
  
exit 0

注意

编写程序作为守护监控,调用fork函数启动新进程,然后调用execl启动监控程序,发现主进程被阻塞


标签:脚本,PRO,stop,cd,guard,cmms,NAMES,监控,Linux
From: https://blog.51cto.com/fengyuzaitu/6165752

相关文章

  • 汇总Linux、Git命令、工具
    基本命令uname-m显示机器的处理器架构uname-r显示正在使用的内核版本dmidecode-q显示硬件系统部件hdparm-tT/dev/sda在磁盘上执行测试性读取操作系统信息arch显示机器的处理器架构uname-m显示机器的处理器架构hdparm-i/dev/hda罗列一个磁盘的架构特性cat......
  • linux基本功系列之yum命令
    1.yum命令介绍1.1yum的介绍yum命令来自于英文词组”YellowdogUpdater,Modified“的缩写,其功能是用于在Linux系统中基于RPM技术进行软件包的管理工作。YUM是C/S架构的在线软件安装命令,是RPM1的前端工具,依赖于RPM存在的。能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖......
  • Linux|--sh脚本|--文件执行报错::Error response from daemon: invalid reference for
    前言由于Linux中的docker镜像和容器需要批量处理,所以搞一个脚本,直接一下处理了,1.我在Windows10的本机电脑上新建了一个"test.sh"文件2.将"test.sh"文件上传到Linux环境中3.在Linux中执行"shtest.sh"4.报错了...第一次报错信息[root@VM-4-3-centostest_api]#shdock......
  • linux内核数据结构 --- list_head
    以structkobject为例,讲解如何使用链表structlist_headstructkobject{constchar*name;structlist_headentry;structkobject*parent;...};structlist_head类型变量作为structkobject的成员(从面向对象的角度,也可以看成str......
  • CentOS7-启动|重启|停止|状态服务脚本
    源码编译安装方法1、上传包nginx-1.10.0.tar.gz至服务端#解压到工作目录[root@template~]#tarxfnginx-1.10.0.tar.gz-C/usr/local/src/#切换至Nginx目录下,找到configure[root@template~]#cd/usr/local/src/[root@templatesrc]#lltotal0drwxr-xr-x.81001......
  • Linux系统下添加防火墙规则(添加白名单)
     Linux系统下添加防火墙规则(添加白名单)防火墙的作用:  可以通过设置ip白名单/黑名单的方式限制外部ip的访问或者限制访问内部某个端口;添加防火墙过滤规则步骤如下;1、查看现有防火墙过滤规则:  iptables-nvL--line-number2、添加防火墙过滤规则(设置白名单):    1......
  • Linux数据分析之九个给力的命令行工具
    导读要对数据进行分析,大家会从哪里入手?对于大多数熟悉了图形工作环境的朋友来说,电子表格工具无疑是第一选项。但命令行工具同样能够更快更高效地解决问题——且只须稍微学习即可上手。要对数据进行分析,大家会从哪里入手?对于大多数熟悉了图形工作环境的朋友来说,电子表......
  • linux下gcc/g++版本切换
    因为一些道不清说不明的原因,经常需要用到不同的gcc版本 这里先提一个事情,自己编译gcc版本的事情,翻自己的记录(doc文件吧) 然后提下,在ubuntu下,默认gcc版本是11,但需要12版本,安装指令:sudoaptinstallgcc-12g++-12-y安装完成后,继续执行下面的指令:sudorm/usr/bin/gcc......
  • 脚本批量备份交换机路由器配置研究
    交换机路由器配置文件备份批量脚本powershellrouterswitchbackupsshpowershell传教士原创文章。始于2023-04-02允许转载,但必须保留名字和出处,否则追究法律责任 ---【前言】---最近我看了一篇文章。讲的是:【目的】:以5分钟为循环周期,经ssh,用密码,用py批量备份交换......
  • Linux系统下Samba服务器的配置
     实训目的:掌握Samba服务器的主配置文件的设置;掌握Samba服务用户的添加及权限设置;掌握Samba客户机的应用。实训环境:操作系统为CentOS7的网络服务器。实训步骤:第1步:将目录/home/media设置为允许所有用户访问,但仅允许用户mary具有修改该目录的权限。其配置步骤简述如下。1)......