此代码未经测试,目的是每隔3秒检查一次输出文件的大小,如果myprogram停止增加,则终止它。不管怎样,它也应该在60秒后被杀死。
此脚本将由整个脚本的事件触发多次运行。
我的问题是,有一种更有效的方法可以在不运行几十个1秒计时器的情况下实现对文件大小的监控。
也许是一个运行1秒主计时器的脚本,其输出在运行时通过管道传输到所有文件大小监控脚本中?
myprogram >> ~/log/$$.txt
pid=!$
filesize='1'
counter='0'
counter2='0'
while ((counter<61))
do
((counter++))
((counter2++))
if (( $counter2 == "3" )) ;
then
counter2='0'
lastfilesize=$filesize
filesize=$(stat -c%s "~/log/$$.txt")
if (( $filesize == $lastfilesize )) ;
then
kill $pid
fi
fi
sleep 1
done
if (( $counter == 61 )) ;
then
kill $pid
fi
exit
由于将注释标记为答案的功能请求仍然被拒绝,因此我将上述解决方案复制到此处
如果你只对每3秒检查一次感兴趣,为什么不睡3个循环呢Grisha Levit