2013-10-25 87 views
-1

我在执行此打印'hello'的bash脚本时出错,直到后台进程继续执行。错误:在命令中找不到ps命令

ps command not found 

我已经做了几次之前,但不知道为什么我这次得到错误。

./a.sh & 
while ps -p $! > /dev/null; do 
     echo hello 
done 
+2

您是否惹了PATH?你还有/ bin/ps吗? – geoffspear

+0

我已经验证了这一点,PATH有这个位置ps – marc

+0

什么是完整的输出,它运行一次,然后停止?或者它立即抛出命令未找到错误? – Farlan

回答

0

调试这个问题,我建议如下

nohup ./a.sh & 
p1=$! 

while ps -p $p1 
do 
    echo hello 
    sleep 1 
done 
1

这并不解决您的明显PATH问题,但有一个简单的方法你想要比调用ps反复做什么。

# Start your script in the background, remembering its process ID 
./a.sh & A_PID=$! 

# Start another background job that echos hello (once per second, to 
# avoid a flood of hellos). Remember its process ID as well 
(while : ; do echo hello; sleep 1 done) & LOOP_PID=$! 

# Now wait for a.sh to finish... 
wait $A_PID 

# ... and kill the hello job 
kill $LOOP_PID