1

スクリプトを作成しようとしている興味深い状況があります。正常に起動すると、10 秒後に 26,000 行を出力するプログラムがあります。それ以外の場合は、それを強制終了して再起動する必要があります。私はこのようなことをしてみました:

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

ただし、それはプログラムの実行が終了した場合にのみ機能します。コマンドの出力ストリームを監視し、それに応じて決定を下す賢い方法はありますか? 私は途方に暮れており、これを検索する方法さえよくわかりません。ありがとう!

4

2 に答える 2

4

どうですか

./long_program > mylogfile &
pid=$!
sleep 10

# then test on mylogfile length and kill $pid if needed
于 2012-08-18T08:18:59.603 に答える
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
于 2012-08-18T08:26:32.160 に答える