【发布时间】:2010-05-19 07:46:11
【问题描述】:
我正在后台运行一个 ANT 任务,并每隔 60 秒检查一次该任务是否完成。如果不是,则每 60 秒,屏幕上应显示一条消息 - “部署进程仍在运行。自部署开始后的 $slept 秒数”,其中 $slept 为 60、120、180 n 等等。
有 1200 秒的限制,之后脚本将通过“ant log”命令显示日志并询问用户是否继续。如果用户选择继续,则时间限制会增加 300 秒并重复该过程。
我用于此任务的代码是 -
ant deploy &
limit=1200
deploy_check()
{
while [ ${slept:-0} -le $limit ]; do
sleep 60 && slept=`expr ${slept:-0} + 60`
if [ $$ = "`ps -o ppid= -p $!`" ]; then
echo "Deploy process is still running. $slept seconds since deploy started."
else
wait $! && echo "Application ${New_App_Name} deployed successfully" || echo "Deployment of ${New_App_Name} failed"
break
fi
done
}
deploy_check
if [ $$ = "`ps -o ppid= -p $!`" ]; then
echo "Deploy process did not finish in $slept seconds. Here's the log."
ant log
echo "Do you want to kill the process? Press Ctrl+C to kill. Press Enter to continue."
read log
limit=`expr ${limit} + 300`
deploy_check
fi
现在,问题是 - 此代码不起作用。这看起来像一个非常好的代码,但是,这不起作用。谁能指出这段代码有什么问题。
【问题讨论】:
-
您能否更具体地说明它是如何不起作用的?
-
他在之前的问题 stackoverflow.com/questions/2810757/… 的 cmets 中提到,他并不总是看到“仍在运行”消息。
-
@pra:感谢您的指点。 OP 应该将这些信息带到这个问题。