我有一个有趣的情况,我正在尝试编写脚本。我有一个程序在成功启动 10 秒后输出 26,000 行。否则我必须杀死它并重新启动它。我试着做这样的事情:
test $(./long_program | wc -l) -eq 26000 && echo "Started successfully"
但这仅在程序完成运行时才有效。有没有一种聪明的方法来观察命令的输出流并做出相应的决定?我很茫然,甚至不确定如何开始搜索这个。谢谢!
关于什么
./long_program > mylogfile &
pid=$!
sleep 10
# then test on mylogfile length and kill $pid if needed
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