unix命令将日志重定向到特定持续时间的文件

时间:2013-09-12 17:29:29

标签: shell unix

我正在通过shell脚本运行应用程序。 我希望将控制台日志重定向到文件,但仅在启动期间(例如前10分钟)。之后,我不希望将日志写入文件?

这可以实现吗?

1 个答案:

答案 0 :(得分:1)

如果你可以使用perl,这个单行应该这样做:

command | perl -pe '
  BEGIN { open(LOG, ">log") || die $!; select LOG; $|=1; $end=time+1 }
  select STDOUT if (time>=$end)'

perl -pe告诉Perl在循环中回显标准输入到选定输出的行。 BEGIN块在循环开始之前打开日志文件(无缓冲,因此您在文件中看到消息而不等待缓冲区填满),选择它作为输出并将结束时间设置为十分钟( 600秒)从现在起。然后执行只是在初始阶段之前打印到日志文件,然后打印到标准输出。