使用 screen 命令过滤屏幕日志

使用 screen 命令过滤屏幕日志

Ctrl+ AH、 让我记录screen命令的输出。但是,输出文件太大。是否可以应用grep类似的过滤器,以便我可以控制记录的内容?

例如,我可能希望仅记录包含短语 的行foo bar

答案1

有趣的问题。我只是浏览了一下,man screen所以我不确定是否可以在不使用外部工具的情况下实现。但是,可以使用命名管道以及 tail 和 grep 的组合来执行此操作:

$ mkfifo /tmp/fifo/fifo
$ tail -f /tmp/fifo/fifo | grep --line-buffered bar >> /tmp/DONE

里面screen做:

logfile /tmp/fifo/fifo

并开始记录。完成记录后,仅包含的行将bar保存在/tmp/DONE.正如其中所述man fifo

FIFO 特殊文件(命名管道)与管道类似,不同之处在于它是作为文件系统的一部分进行访问的。它可以被多个进程打开以进行读或写。当进程通过 FIFO 交换数据时,内核会在内部传递所有数据,而不将其写入文件系统。因此,FIFO 特殊文件在文件系统上没有内容;文件系统条目仅充当参考点,以便进程可以使用文件系统中的名称访问管道。

这意味着/tmp/fifo/fifo不占用磁盘空间。这个解决方案对我有用,但我不知道它可能有什么负面影响或缺点。

编辑:

我刚刚注意到他们建议fifo使用man script

-f, --flush 每次写入后刷新输出。这对于远程合作来说非常有用:一个人可以执行“mkfifo foo;”操作。 script -f foo',另一个可以使用 'cat foo' 实时监督正在执行的操作。

如果你不知道,脚本是一个还记录终端会话的实用程序。

相关内容