如何远程观看终端窗口?


8

我离开办公室之前有一个活动的终端窗口,该窗口在Centos 7服务器上运行脚本。现在我已经从家里进行SSH了,我想知道它的去向。这可能吗?我可以从这里重新加入同一终端窗口吗?



我还想将tmate.io添加到下面的所有答案中
webKnjaZ

一种选择是:(strace -e write -p 12345用您感兴趣的过程的pid代替)。另一个选择是:(strace -e read -p 12345替换终端仿真器的pid)。原则上,可以编写一个程序来使用ptrace系统调用以相同的方式收集信息strace,然后将其直接写入其自己的终端。我不知道这样的程序是否存在,但是它将满足您问题中指定的要求。
kasperd

一种可能的方法是,在目标计算机上启用RPC(远程过程调用),然后您可以(远程)连接并控制屏幕,包括单个窗口。注意:这会打开一个漏洞,因此请确保在完成后禁用RPC。
user3629249'7

Answers:


14

如@Sven所述,最好的选择是使用screentmux。这些是称为“终端多路复用器”的工具。它们使您可以创建可以附加到实际登录中或从实际登录中取消附加的shell会话。这些工具不仅可用于从另一个终端检查您的工作,还具有其他功能,包括与另一个用户共享会话以及确保在断开Internet连接时命令不会停止。如果要搜索screen,则可以尝试搜索“ GNU屏幕”。这两种工具在大多数Linux系统上都可用。

通常,您将启动会话,然后在该会话内执行命令。但是,如果您已经启动了该命令,则可能需要查找有关将正在运行的命令移入屏幕会话的文章。不过,我不建议您在重要的事情上第一次尝试。这个问题可能有用:

将已经在运行的进程移至Screen

如果您只想查看进程是否正在运行,则我最喜欢的工具是strace。该工具使您可以查看进程进行的每个内核调用。理解输出可能需要一些技巧,但至少应该让您知道该进程是否正在运行,并且如果您观察得足够近,则可能会捕获到正在打开的文件名。为此,首先,可以通过搜索来找到PID,ps aux|grep yourcommand然后:

strace -fp YOUR_PID

您可以^ C摆脱困境。它可能不允许您重新连接,但是如果您只是想知道它在做什么,那就足够了。


为什么不允许您重新连接?
HSchmale

@HSchmale我不确定我是否理解您的问题。如果您指的是strace,那么该程序根本不会给您终端。它只是向您显示正在执行的内核调用。很多时候,当我怀疑某个进程已挂起时,strace会向我显示当前正在处理的确切文件,因此我知道它在哪里,并且没有挂起。
2015年

这是我的错读,我以为您无法将strace重新连接到它,但是您的意思是将一个终端重新连接到它。
HSchmale

9

一种方法:TMUX

正如大多数答案所指出的那样-如果在现有的SSH会话中-您可以在命令中使用tmux(或screen

tmux

您现在处于新的bash会话中,可以在其中启动程序/命令。您可以随时关闭它(但不能使用CTRL + D,而是通过关闭窗口来关闭它),稍后再通过在同一台计算机上建立到同一用户的SSH连接并返回命令来返回到该窗口。

tmux attach

您还可以通过给它们命名以进行多个 tmux会话

tmux new -s myname

您可以通过tmux以下方式查看用户的所有打开的会话的列表

tmux ls

并附加到命名tmux会话

tmux a -t myname

tmux cheat sheet 在这里找到综合内容。

对于正在运行的程序

到目前为止,答案似乎并未意识到您可以将已经在运行的进程移至另一个tmux/ 的事实,screen正如该答案所指出的那样。可以执行该工作的程序,reptyr在Ubuntu / Debian下,您可以使用简单的方法进行安装

sudo apt-get install reptyr

之后,找出您执行中的程式的程序编号(例如使用tophtop),然后开始tmux工作阶段和

reptyr PID

将正在运行的进程重新连接到您的tmuxbash会话。


5

将来,您可以使用screentmux,然后可以重新附加正在运行的会话。


3

我一直在使用byobu,我发现它功能强大。Byobu是GPLv3开源基于文本的窗口管理器和终端多路复用器。

因此,您只需输入“ byobu”即可打开byobu会话。然后,您可以使用Ctrl + F2创建新选项卡,并在两个选项卡之间移动,Ctrl + F3表示后退,Ctrl + F4表示前进。您可以使用Ctrl + F6关闭标签,也可以使用Shift + F6从会话中分离。您稍后只需再次输入“ byobu”即可重新加入会话。

Byobu支持垂直和水平拆分,全屏以及其他精美功能。它可以在Ubuntu / Debian,CentOS / Fedora / RedHat和FreeBSD上使用。


似乎似乎误导byobu呼叫终端多路复用器。这真的只是一个前端tmuxscreen许多发现提供了更好的用户体验比他们做的开箱即用。
B层

2

正如已经指出的那样,我建议将来使用tmuxscreen,但这仅在您事先考虑过后才适用。

我去过你的情况好几次了。如果您未运行的终端在办公室台式PC中,则可以SSH进入PC并启动VNC服务器。这样,您至少可以检查打开的终端。


0

大家都说过,可以使用tmux。屏幕在要与多人共享屏幕的地方不可用。

最重要的是,我建议每个人都试用https://tmate.io/,以提供临时访问权限,甚至可以访问localmachine。tmate支持上述所有方法:)

https://tmate.io/

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.