linux中保证进程不退出

版权声明:本文为博主原创文章,欢迎转载,请尊重原创,转载注明链接。 https://blog.csdn.net/qqliyunpeng/article/details/81321541

1. 需求

    在实际编写应用程序的时候,可能会出现如下场景,你正在开发阶段,但是你的上层,可能也要测试,此时,你的程序不定时的因为某种原因会蹦掉,但其实你不关心,因为在开发阶段,具体原因留待以后解决,此时,一个保证你程序能自动重启的机制就需要了。


2. 正文

    2.1 保证进程不退出的思路大致是这样的:

    (1)用 ps 查看进程

    (2)在进程退出的时候,重启进程

有了思路,我们还要确认的一点是,多长时间去执行一会这个步骤。假设10s,接下来便是用crontab来每10s查看一下进程中有没有ss.out进程,如果没有,将重新启动进程。

    2.2 代码

    crontab的设置如下:

> crontab -e

这里可能会提示没有 /var/spool/cron/crontabs 这个文件夹,我们创建即可

> mkdir -p /var/spool/cron/crontabs

在弹出的编辑器里输入如下内容

* * * * * /home/root/retain_program.sh
* * * * * sleep 10; /home/root/retain_program.sh
* * * * * sleep 20; /home/root/retain_program.sh
* * * * * sleep 30; /home/root/retain_program.sh
* * * * * sleep 40; /home/root/retain_program.sh
* * * * * sleep 50; /home/root/retain_program.sh

【1】crontab设置的意思是没1分钟,执行上边代码中的内容,这个的意思就是每10s执行一次 /home/root/retain_program.sh 脚本

接下来我们编写 /home/root/retain_program.sh 脚本

#!/bin/sh

cnt=`ps | grep ss.out | grep -v "grep" | wc -l`

if [ $cnt -eq 0 ]
then
    echo `date` >> /home/root/1.txt
    /home/root/ss.out&
fi

【1】在每次检查到没有 ss.out 进程的时候,把此时的时间追加的形式写到1.txt中,并且重新启动进程ss.out

启动crontab守护进程

> crond

猜你喜欢

转载自blog.csdn.net/qqliyunpeng/article/details/81321541