当前位置: 技术问答>linux和unix
征集,进程意外终止后,自动重启的方法
来源: 互联网 发布时间:2016-07-08
本文导语: 我有一个程序,要求能够一直运行,故要求在其意外终止后,自动重启。 请问大家,这有些什么样的方法呢?如果有例程就更感谢了。 | 嗯,确实如此... 那可以使用监控进程或添加到/etc/inittab文件的...
我有一个程序,要求能够一直运行,故要求在其意外终止后,自动重启。
请问大家,这有些什么样的方法呢?如果有例程就更感谢了。
请问大家,这有些什么样的方法呢?如果有例程就更感谢了。
|
嗯,确实如此...
那可以使用监控进程或添加到/etc/inittab文件的方法。id:runlevel:action:程序
“kill指kill函数,它可以通过pid检测一个进程是否存在。”kill函数是向指定的进程发送指定信号的函数,为何要用kill函数来检测?
|
写一个shell就行了!当然这个程序要增加自我进程检测函数判别不能启动1个以上的程序。我写的这个脚本也有自检功能。
我给你写了一个,能跑通的测试过的 你把YourProgram 这里替换成你程序的名字就行了。
我给你写了一个,能跑通的测试过的 你把YourProgram 这里替换成你程序的名字就行了。
#!/dev/sh -x
#RUN_HOME=/Manuel.d/bin
RUN_HOME=/root/bin
###停滞状态
STOP=0;
###监护进程休眠时间
SLEEPTIME=1;
###是否开启AutoCheck监护脚本 1开0关
CHECKSWICH=1;
#CHECKSWICH=0;
###是否开启自我检查脚本 1开0关
SELFCHECKSWICH=1;
#SELFCHECKSWICH=0;
###脚本连接个数2-1
CONNENTCOUNT=2;
CheckProg()
{
while [ ${CHECKSWICH} ]
do
Date=` date +'%Y-%m-%d/%H:%M:%S' `;
echo "在"$Date"时间段进行:YourProgram进程监护";
ps -ef | grep -v grep | grep "YourProgram" |wc|awk '{print $1}'|read state;
if [ ${state} -eq ${STOP} ]
then
echo "YourProgram 进程异常停止n";
##########################
##在这里加上启动程序的命令
##########################
fi
echo "YourProgram 进程已被激活n";
echo "PS:下一次检测时间在"$SLEEPTIME"秒后n";
sleep ${SLEEPTIME};
done
}
SelfCheck()
{
if [ ${SELFCHECKSWICH} ]
then
sleep 3;
ps -ef | grep -v "grep" | grep "AutoCheck_" | wc |awk '{print $1}'|read count;
if [ ${count} -ge ${CONNENTCOUNT} ]
then
echo "启动失败,此进程现已存在.当前进程存在个数${count}n"
exit;
fi
echo "准备启动自动监护过程.n"
fi
}
Main()
{
SelfCheck;
CheckProg;
}
if [ $# -ne 1 ] || [ $1 != 1 ]
then
exit;
fi
if [ $1 = 1 ]
then
Main;
fi
exit;
|
这个脚本太烂了吧,
考虑一下,我正在看这个进程的log通常用 view YourProgram.log
这个脚本会出错的。
可靠的办法是
1.
while [ 0 ]; do
YourProgram.pid &
wait $!
done
2.
pid_t pid;
int status;
for (;;) {
pid = fork();
if (pid
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
站内导航:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!