12

介绍

我是新用户GNU screen,我使用它主要是因为如果我的 SSH 连接意外关闭,我不想丢失我的工作,还因为我想保留打印在终端上的每个输出的日志文件(至少一些最近的曲目)

对于 SSH 的东西,我想Ctrl+a d分离screen -rscreen -r session_name重新连接到某个会话解决了我所有的问题,现在我正在尝试理解日志记录。

我发现screenloghardcopy这个链接上,它基本上说:

hardcopy Ctrl +a h将当前显示内容写到hardcopy.n窗口默认目录下的文件中,这里n是当前窗口的编号。如果文件存在,这将附加或覆盖文件,由hardcopy_append命令确定。

log Ctrl +a H开始/结束将当前窗口记录到screenlog.n窗口默认目录中的文件,其中 n 是当前窗口的编号。如果没有给出参数,则切换记录状态。如果文件已经存在,则会话日志将附加到文件的先前内容中。当前内容和回滚历史的内容不包含在会话日志中。默认为off


观察到的行为

因此,据我了解并尝试使用它们,在启用之后screenlog,它会继续记录我编写的所有内容以及该文件中终端的所有输出(恰好$HOME适合我),包括那些改变颜色的字符,如\033[1;31mm. 如果我这样做cat screenlog.0了,它有时会无限期地打印文件时崩溃,但是好的,我可以用编辑器或在另一个会话中打开它......

至于hardcopy,显然它没有跟踪命令,也没有输出颜色,而且我不知道它是否只需要终端中可见的那几行或该会话中发生的所有事情,有人可以向我澄清一下吗?

最后,我打开screenTerminator不是经典终端,即使我screen在不​​同的窗口上打开不同的会话Terminator,所有日志都转到screenlog.0hardcopy.0。在 的情况下screenlog,它是否会与正在其他会话上输出的另一个进程冲突或覆盖它?如何创建不同的screenlog.n文件并将它们放在除 之外的目录中$HOME


进一步的考虑

总结一下,推荐哪一个?对于这个巨大的问题,我很抱歉,但我正在尝试以一种有助于澄清我在其他地方很难找到的这些日志的细节的方式来编写它。如果我说错了,请随时纠正我:)

4

1 回答 1

1

hardcopy command does not save character attributes (colors, bold etc.) but, with '-h' argument also saves contents of scrollback buffer.

Destination directory for hardcopy files can be set via hardcopydir command; existing files are not moved, and this setting applies to all windows currently open and future ones; directory for log files is "window's default directory" -- this can be changed with chdir command; it applies to current window and all future ones.

Log file name pattern can be set via logfile command. All screen's escape sequences should work in the pattern; for example, logfile screenlog.%Y%m%d.%S.%n. However, hardcopy file name pattern is hardcoded.

于 2016-05-15T20:53:12.417 回答