启动命令,在10秒后计算输出行数,然后重新启动它或让它运行

时间:2012-08-18 08:03:55

标签: linux bash

我有一个有趣的情况,我试图编写脚本。我有一个程序,它成功启动10秒后输出26,000行。否则我必须杀了它并重新开始。我尝试过这样的事情:

test $(./long_program | wc -l) -eq 26000 && echo "Started successfully"

但只有在程序完成运行时才有效。是否有一种聪明的方法来观察命令的输出流并做出相应的决策?我不知所措,甚至不确定如何开始寻找这个。谢谢!

2 个答案:

答案 0 :(得分:4)

怎么样?
./long_program > mylogfile &
pid=$!
sleep 10

# then test on mylogfile length and kill $pid if needed

答案 1 :(得分:0)

count=0
until [ $count -eq 26000 ]; do
    killall ./longrun
    #start in background
    ./longrun >output.$$ &
    sleep 10
    count=$(wc -l output.$$ |awk '{print $1}')   
done
echo "done"
#disown so it continues after current login quits
disown -h