我正在发布我们与cron一起使用的sh脚本的一部分来对我们的Oracle EBIZ进行冷备份。它大部分时间都有效,偶尔失败,因为脚本监视的一个进程无法停止/终止
代码部分
su - applprod -c /home/applprod/scripts/Apps_stop.sh
FNDPROCESS=`ps -ef | grep FNDLIBR | grep applprod | wc -l`
echo 'We have still running ' $FNDPROCESS ' FNDLIBR for PROD'
echo 'Please wait...for ' $FNDPROCESS ' seconds!!'
NPROCESS=$FNDPROCESS
while [ $FNDPROCESS -gt 0 ]
do
FNDPROCESS=`ps -ef | grep FNDLIBR | grep applprod | wc -l`
if [ $FNDPROCESS -ne $NPROCESS ]
then
echo 'We have still running ' $FNDPROCESS ' FNDLIBR for PROD'
echo 'Please wait...for ' $FNDPROCESS ' seconds!!'
sleep $FNDPROCESS
NPROCESS=$FNDPROCESS
fi
done
通常循环在3-4分钟内完成,除非其中一个FNDLIBR进程无法
现在我们需要为上面的循环添加最多30分钟的等待时间,因此,如果等待时间超过29分钟,脚本应该强制终止所有匹配'FNDLIBR'(并发管理器)的进程并退出循环。
请帮帮我:)。
谢谢和问候,
答案 0 :(得分:1)
您可以使用sleep 1740
您的程序将暂停29分钟,在此行之下,您可以编写代码,以杀死所有仍在运行的进程。
答案 1 :(得分:0)
我会使用以下方法:
这样,当一切正常时,或者脚本监视器无法终止时,过程将花费3或4分钟。