sh bothworkfile.txt >> cleanup_process.log
while [[ `ps -eaf | grep -c "cleanx"` -ge 2 ]]
do
sleep 10
echo "Please be patient, we are still cleaning stuffs ! "
done
echo " Clean up is done."
嗨我正在使用ksh。 bothworkfile.txt包含几行来在后台运行该进程。
cat bothworkfile.txt
cleanx data01.xsd*.* &
cleanx data01.xsd*.* &
Cleanx是我本地shell中的一个实用程序。默认情况下,总是会在后台运行cleanx。所以,
ps -eaf | grep -c "cleanx"
总是给1,但是当脚本调用它时,数字会增加。
但现在问题是我似乎无法进入while循环。运行脚本后,它打印"清理已完成。"
请帮助我理解为什么它不循环进入。再次,它的ksh shell。
答案 0 :(得分:1)
为了更容易调试并看到结果确实是您所期望的,请将ps -eaf | grep -c "cleanx"
的结果分配给变量,然后测试变量。我怀疑它正在评估为空或小于2,这将导致测试返回false,从而跳过循环。因此,在测试之前将其打印出来,以便您确定。像这样:
cleanx_count=$(ps -eaf | grep -c "cleanx")
printf "Cleanx_count: %d/n" ${cleanx_count}
while [[ ${cleanx_count} -ge 2 ]]