我正在通过 shell 脚本运行应用程序。我希望控制台日志被重定向到一个文件,但仅在启动期间(比如前 10 分钟)。之后我不想将日志写入文件?
这可以实现吗?
如果你可以使用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 秒) . 然后执行简单地在初始周期之前打印到日志文件,然后打印到标准输出。