如何加入监控程序在Ubontu系统下高效执行

应用程序运行过程中,任何人都无法保证它永远不死定,因此自动重启就十分必要。但是对于一些大型的系统设计,性能要求是很高的,该监控程序也会真用较多的系统资源,因此对该操作部署任务计划是有必要的。

一、监控脚本代码monitor.sh

#!/bin/bash

#------------------------------------------------------------------------------
# 函数: CheckProcess
# 功能: 检查一个进程是否存在
# 返回: 如果存在返回0, 否则返回1.
#------------------------------------------------------------------------------
CheckProcess()
{
  # 检查输入的参数是否有效
  if [ "l3fwdkni" = "" ];
  then
    return 1
  fi

  #$PROCESS_NUM获取指定进程名的数目,为1返回0,表示正常,不为1返回1,表示有错误,需要重新启动
  PROCESS_NUM=`ps -ef | grep "l3fwdkni" | grep -v "grep" | wc -l`
  if [ $PROCESS_NUM -eq 1 ];
  then
    return 0
  else
    return 1

  fi
}

# 检查实例是否已经存在
 CheckProcess "/root/dpdk_2.0.0/dpdk-2.0.0/examples/cw/1221/l3fwd/build/l3fwdkni"
 CheckQQ_RET=$?
 if [ $CheckQQ_RET -eq 1 ];
 then
   killall -9 l3fwdkni
   killall zebra
   umount -t hugetlbfs nodev /mnt/huge
   sleep 1 
   mount -t hugetlbfs nodev /mnt/huge
   exec /root/dpdk_2.0.0/dpdk-2.0.0/examples/cw/1221/l3fwd/build/l3fwdkni -c 0xFE -n 2 -- -P -p 0x03 --config="(0,0,2),(1,0,3)" >> "/root/dpdk_logs/`date`.log" &
   sleep 15 
   exec /usr/local/sbin/zebra -d >> "/root/zebra_logs/`date`.log" &
 fi
 sleep 1 


需要实现重启的程序名为l3fwdkni ,我们这里通过判断进程数目来判断程序是否正常。

ps -ef | grep "$1" | grep -v "grep" | wc –l   其中的 $1 是要监控的进程名称,这个命令将返回该进程的进程个数。脚本根据进程数来决定下一步的操作。参考:点击打开链接


二、crond简介

   crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。想要让cron执行你指定的任务,首先就要编辑crontab文件。crontab是一个文本文件,用来存放你要运行的命令。

crontab的一些概念:

    crontab中的每一行代表一个定期执行的任务,分为6个部分。前5个部分表示何时执行命令,最后一个部分表示执行的命令。每个部分以空格分隔,除了最后一个部分(命令)可以在内部使用空格之外,其他部分都不能使用空格。前5个部分分别代表:分钟,小时,天,月,星期,每个部分的取值范围如下:

 

分钟           0 - 59

小时           0 - 23

天             1 - 31

月             1 - 12

星期           0 - 6       0表示星期天

 

除了这些固定值外,还可以配合星号(*),逗号(,),和斜线(/)来表示一些其他的含义:

 

星号 *         表示任意值,比如在小时部分填写 * 代表任意小时(每小时)

逗号 ,         可以允许在一个部分中填写多个值,比如在分钟部分填写 1,3 表示一分钟或三分钟

斜线 /         一般配合 * 使用,代表每隔多长时间,比如在小时部分填写 */2 代表每隔两分钟。所以 */1 和 * 没有区别

                       */2 可以看成是能被2整除的任意值。


例子:

* * * * *                  # 每隔一分钟执行一次任务  
* * * * *                  # 每小时的0点执行一次任务,比如6:00,10:00  
6,10 * 2 * *               # 每个月2号,每小时的6分和10分执行一次任务  
*/3,*/5 * * * *            # 每隔3分钟或5分钟执行一次任务,比如10:03,10:05,10:06  


下面介绍crontab命令基本的用法:

1、来打开你的用户所属的crontab文件。第一次用这个命令,会让你选择文本编辑器,一般选择vim。

命令:

select-editor  


2、打开crond文件

命令:

    crontab -e  


3、编辑crond文件

命令:

    # m h  dom mon dow   command
    */2 * * * * /root/dpdk/sh/monitor.sh


两分钟执行一次该监控脚本

4、保存了crontab之后,我们还需要重启cron来应用这个计划任务。

命令:

    service cron restart

 

cron参考博客:点击打开链接




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值