Tom*_*ina 51 terminal-emulator terminal tty
我需要从虚拟终端连接到当前正在运行的终端 (tty1) 的输出并捕获它(运行 X 服务器)。
slm*_*slm 29
我遇到了一个名为ttylog. 这是对现有CPAN Perl程序在这里。它有几个警告,其中一个是我只能弄清楚如何连接到作为某人 SSH 进入我的盒子的一部分而创建的终端。另一个是您必须以提升的权限(即 root 或 sudo)运行它。
但它有效!
首先在 TERM#1 中通过 ssh 进入你的盒子:
TERM#1% ssh saml@grinchy
Run Code Online (Sandbox Code Playgroud)
注意这个新终端的 tty:
TERM#1% tty
/dev/pts/3
Run Code Online (Sandbox Code Playgroud)
现在在另一个终端(TERM#2)中运行这个命令:
TERM#2% ttylog pts/3
DEBUG: Scanning for psuedo terminal pts/3
DEBUG: Psuedo terminal [pts/3] found.
DEBUG: Found parent sshd pid [13789] for user [saml]
Run Code Online (Sandbox Code Playgroud)
现在回到 TERM#1 并输入东西,它会出现在 TERM#2 中。

我尝试过的所有命令(top、ls 等)使用ttylog.
小智 22
看着:
man 1 script
Run Code Online (Sandbox Code Playgroud)
例如:
script -f /dev/tty1
Run Code Online (Sandbox Code Playgroud)
Baa*_*rud 21
的确是。/dev/vcs* 和 /dev/vcsa* 设备对应于 /dev/tty* 设备(虚拟终端)。F1=tty1=vcs1/vcsa1 依此类推。vcs/vcsa 就像“当前”虚拟终端的 tty。
作为根用户,您可以只对这些设备进行分类(例如 cat /dev/vcs2),并像拍摄快照一样查看相应 VT 上的内容(例如 /dev/tty2 在 F2 上)。vcsa* 与 vcs* 的不同之处在于它们包含有关终端(屏幕)尺寸的信息。请注意,这只是字符在屏幕上显示的原始快照——从分配给终端的内存中收集——所以不要期望很好的、易于解析的输出。
缺点是如果信息闪过太快,可能难以捕捉。也许 tail -f /dev/vcs1 会起作用,如果您需要关注几个屏幕(我自己没有尝试过)?首先简单地将其重定向到文件可能是最简单的。使用 VT (F1-F6) 查看它也可能是一个好主意,因为端子将具有相同的尺寸。根据我的经验,最好使用 vcs* - 而不是 vcsa* - 设备。
如果这不起作用,也许允许管理员密切关注终端上的活动的“大兄弟”软件包之一可能会起作用。
PS:我忘了问你用的是什么操作系统。这适用于 Linux,尽管其他操作系统上也可能存在类似的设备。尝试在设备的手册页中搜索“虚拟控制台内存”。
tty在每个终端中使用命令来识别它们:
$ tty
/dev/pts/0
$ tty
/dev/pts/1
Run Code Online (Sandbox Code Playgroud)
假设这些 TTY,要将第一个的 stdout 重定向到第二个,请在第一个终端中运行:
exec 1>/dev/pts/1
Run Code Online (Sandbox Code Playgroud)
注意:现在每个命令输出都将显示在 pts/1 上
要恢复 pts/0 的默认行为标准输出:
exec 1>/dev/pts/0
Run Code Online (Sandbox Code Playgroud)
请参阅此视频以进行演示。