应用程序运行过程中,任何人都无法保证它永远不死定,因此自动重启就十分必要。但是对于一些大型的系统设计,性能要求是很高的,该监控程序也会真用较多的系统资源,因此对该操作部署任务计划是有必要的。
一、监控脚本代码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参考博客:点击打开链接
完