Linux 使用crontab命令和shell脚本守护C++程序

在使用C/C++做服务时,服务进程常常因为各种原因死掉,为此需要将服务是守护起来,保证在服务死掉的时候可以重启

1.编写shell脚本,判断服务是否在运行,如果没有运行脚本自动重启服务。以下是一个脚本示例:

#!/bin/bash
CheckProcess()
{
  #$PROCESS_NUM获取指定进程名的数目,为1返回0,表示正常,不为1返回1,表示有错误,需要重新启动
    PROCESS_NUM=`ps -ef | grep "$1" | grep -v "grep" | wc -l` 
    return $PROCESS_NUM
}
CheckProcess "mgm"
CheckQQ_RET=$?
if [ $CheckQQ_RET -le 0 ];
 then
    export DISPLAY=:0;
    /usr/bin/mate-terminal -x /home/start_mgm.sh
fi

CheckProcess "laiserver"
CheckQQ_RET=$?
if [ $CheckQQ_RET -le 0 ];
 then
    export DISPLAY=:0;
    /usr/bin/mate-terminal -x /home/start_laiserver.sh
fi

其中定义一个CheckProccess()函数,通过ps -ef | grep "$1" | grep -v "grep" | wc -l 来获取对应传入名称的进程在系统中运行的个数。当进程个数为0时重新启动对应进程,这里我检测了mgm进程和laiserver进程,当进程个数为0的时候执行export DISPLAY=:0;和/usr/bin/mate-terminal -x /home/start_laiserver.sh语句,其中export DISPLAY=:0为在第一个桌面上启动,/usr/bin/mate-terminal -x表示使用终端启动,/home/start_laiserver.sh是用来启动aiserver进程的脚本。

2.使用crontab守护循环执行上述脚本

使用crontab可以对上述shell脚本循环执行

使用

crontab -e

命令可以编辑corntab以将步骤1中的脚本重复执行

Linux 使用crontab命令和shell脚本守护C++程序

  在文件的尾部加入 * * * * * /(步骤1脚本的名称)

其中* * * * * *代表每分钟检测一次 ,五个*分别代表 分时日月年 

完成后退出便可将mgm进程和aiserver进程守护起来

上一篇:支付宝的商业与技术创新双轮驱动 创造数字时代普惠金融“奇迹” | 7月1号云栖夜读


下一篇:蚂蚁金服和他的小伙伴又在搞事情了