在bash脚本中寻找每秒轮询一次的替代方案



此代码未经测试,目的是每隔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

相关内容

  • 没有找到相关文章

最新更新