23,110
社区成员
发帖
与我相关
我的任务
分享
while [ 0 ]; do
YourProgram &
wait $!
done
pid_t pid;
int status;
for (;;) {
pid = fork();
if (pid < 0) {
exit(1);
} else if (pid == 0) {
execlp("YourProgram", "YourProgram", (char *)0);
} else {
waitpid(pid, &status, 0);
}
}
while [ 0 ]; do
YourProgram.pid &
wait $!
done
#!/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;