【发布时间】:2015-12-26 05:57:36
【问题描述】:
我正在发布我们与 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'(并发管理器)的进程并退出循环。
请帮帮我:)
感谢和问候,
【问题讨论】:
-
也许这个问题已经回答了:stackoverflow.com/a/11198713/5396827
-
你好@LaPriWa 谢谢。我对 shell 脚本有点陌生。我已经检查了您建议的帖子,看起来我可以更改我现有的脚本以反映基于秒的循环。谢谢你:)
标签: shell process scripting timeout kill