转储 Linux 控制台回滚缓冲区?

转储 Linux 控制台回滚缓冲区?

我们想保存在 Linux 控制台上运行的程序的输出,该程序的输出跨越多行。不幸的是,它没有在屏幕上记录或运行,也没有任何其他方法可以让我们轻松捕获输出。到目前为止,我们能想到的最佳方法是:

Log into the machine via a separate SSH session
In the console session, page to the top of the buffer
Repeat:
  In the SSH session, run "cat /dev/vcs >> screendump.txt"
  In the console session, page down one screen
Dump the final screen in the SSH session

有没有更好的方法?好像如果 VC 内存是连续的您知道可以使用它将dd控制台文本直接从内核内存拉到文件中。

答案1

设置项可以转储 Linux 虚拟控制台的内容:

setterm -file log.txt -dump [ttynumbers]

但是,它无权访问回滚缓冲区,而只能访问当前显示的内容。

答案2

除非VGACON_SOFT_SCROLLBACK设置为“Y”,否则回滚缓冲区位于 VGA 内存中,而不是系统内存中。

相关内容