pre*_*ise 5 server command-line tty
我在 tty 上,有很多命令输入、大量详细的输出和一些错误消息。现在我必须以控制台屏幕中显示的格式将所有这些 stdin/stdout/stderr 文本转储到文件中。我如何使用内置工具(最好)完成这项工作?
不知道问的有没有问题!这真的很简单..假设我登录到 tty1 控制台终端,运行了一些命令(没有启用日志记录,因为我觉得没有必要)但是突然出现了我想转储到文件中的某些输出/消息(或另一种选择得到一支笔和一张纸)。
我之所以假设可以这样做是因为您可以使用shift + PgUp/PgDwn来移动屏幕输出,这意味着它们仍然存在于缓冲区中(即使处理是流水线化的)!..这就是应该恢复的。
TTY 使用“虚拟控制台内存”设备来缓冲其屏幕内容。您可以在 中阅读有关它们的更多信息,man vcs但这将使您了解当前屏幕上的内容。
实际上,这些只是/dev/与 TTY 编号对齐的编号文件。这是我用 TTY2 做的一个例子:
$ sudo fold -w$(stty -F /dev/tty2 size | awk '{print $2}') /dev/vcs2
Ubuntu 14.04 LTS bert tty2
bert login: oli
Password:
oli@bert:~$ cd test
oli@bert:~/test$ ls
Madonna - 10 - Bedtime Story.mp3 output_MP3WRAP.mp3
Madonna - 11 - Take A Bow.mp3
oli@bert:~/test$
Run Code Online (Sandbox Code Playgroud)
在fold -w$(...)那里是因为缓冲输出没有出现有控制字符,换行符我期望的那样。这只是\n在每一行的末尾添加。
正如 TuKsn 在评论中指出的那样,您不必处理所有这些,您可以通过以下方式实现完全相同:
sudo screendump 2
Run Code Online (Sandbox Code Playgroud)
您可以坚持> tty.log在任一命令的末尾将输出写入tty.log当前目录中调用的文件:
sudo screendump 2 > tty.log
Run Code Online (Sandbox Code Playgroud)
同样,这只会让您看到屏幕上的内容。即使您增加 TTY 中的回滚缓冲区,这也不会存储在可访问内存中。您可以更改它,但这涉及重新编译内核。
这将涉及重新启动并丢失当前屏幕,因此如果您可以这样做,则有更简单的选项来记录未来的IO,例如screen或tmux或只是script。
也许您可以使用名为 的程序screen。它将终端的所有输出保存到文件中。看看这个 Ubuntu 论坛主题http://ubuntuforums.org/showthread.php?t=1379903。CMIIW。
由于我找不到全选的任何键盘快捷键,我发现这些可能会有所帮助... /sf/ask/107573021/ 命令行剪贴板复制和粘贴实用程序?
第一个是 screen,已被建议,但它似乎有一个复制文本的实用程序,因此可能有用。使用 ^A-Esc 进入复制模式。开始选择带空格的文本,结束选择带空格的文本。使用 ^A-] 插入文本
第二个是将剪贴板中的文本粘贴到文件中。我完全不确定其中任何一个是否会起作用……希望有一个能起作用。