有没有办法保存带有gnu屏幕的显示器上打印的内容?


9

我喜欢保存我在命令行上所做的所有事情,例如,当我升级某些东西并想回读升级过程时,等等。

通常,在Mac OSX和Terminal中,您可以根据需要进行任意滚动,并使用Cmd-S保存。但是,当我在使用gnu屏幕的SSH上使用时,则无法直接从终端回滚。

如何将屏幕会话中发生的所有事件保存到磁盘?也许默认情况下(每个会话都会自动将文件创建到磁盘...)

谢谢!

Answers:


7

中有一个日志记录功能screen。当您开始screen这样做时screen -L(或从内部开始)启动它screen。或者,也可以从内部screenCtrl- a : H

如果要默认登录,请在~/.screenrc文件中添加以下行:

deflog on

您可能需要使用类似以下的设置文件名:

logfile /tmp/screenlog.%n

1
一个人可能不应该将其存储在/ tmp上,因为通常在重新启动时会对其进行清理(例如,由于电源故障)。
maxelost

@maxelost:这是要考虑的事情。不过,这只是一个例子。关键是要包含一个绝对目录,因为默认行为是在当前目录中创建日志文件。此外,screen会话(即使是分离的会话)也无法在重新启动后幸免。
暂停,直到另行通知。


2

选项1:查看脚本命令。“手稿”

“脚本可以将终端上打印的所有内容作为打字稿。对于需要交互式会话的硬拷贝记录作为作业证明的学生,这很有用,因为以后可以使用lpr打印出打字稿文件”

基本上键入“脚本”(不带引号)-完成您的工作,然后键入一次exit结束会话。

选项2:使用屏幕的“硬拷贝”模式。'Crtl-a'然后是'h'这会将当前会话保存到文件中。

注意:GNU屏幕确实具有滚动功能。使用“ crtl-]”(右方括号)进入复印模式,然后使用“ ctrl-b”和“ ctrl-f”一次将p向下移动一页。


1

您将需要使用通常绑定到的“日志”操作Ctrl-a H。这将打开一个名为screenlog的新文件。N,其中N是窗口号。如果文件存在,则输出将附加到文件中。该窗口中的所有输出都会记录到屏幕日志中。N个文件,直到您Ctrl-a H再次按下将其禁用。您还可以通过使用此功能Ctrl-a :log。您可以使用logfile {filename}命令更改名称。该文件将放置在首次启动屏幕的目录中,但是可以使用logfile命令或使用进行更改chdir [{directory}]

请注意,这与硬拷贝或滚动缓冲区不同。这与script(1)程序具有相同的功能,但与单个窗口相关联,而无需调用新程序。

如果要保存滚动缓冲区的全部内容,请使用Ctrl-a ] g <space> G <space> Ctrl-a :writebuf 此将滚动缓冲区保存到文件/ tmp / screen-exchange。如果您只想保存一部分,则将“ g”和“ G”更改为其他移动键。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.