我如何远程监视终端窗口?

我如何远程监视终端窗口?

我刚刚离开办公室,有一个活动的终端窗口正在 Centos 7 服务器上运行脚本。现在我在家里通过 SSH 登录,想看看它到了哪里。这可能吗?我可以从这里重新加入同一个终端窗口吗?

答案1

正如@Sven提到的,最好的选择是使用screentmux。这些工具被称为“终端多路复用器”。它们允许您创建可以附加到实际登录名或从实际登录名中解除附加的shell会话。这些工具不仅可用于从另一个终端检查您的工作,还具有其他功能,包括与其他用户共享您的会话并确保您的命令不会在您失去互联网连接时停止。如果您正在搜索screen,您可以尝试搜索“GNU Screen”。这两个工具在大多数Linux系统上都可用。

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

将已运行的进程移至 Screen

如果您只想检查进程是否正在运行,我最喜欢的工具是 strace。此工具允许您查看进程进行的每个内核调用。理解输出可能需要一些技巧,但它至少可以让您了解进程是否正在运行,如果您仔细观察,可能会发现它正在打开的文件名。为此,首先,找到 PID,可能通过搜索ps aux|grep yourcommand,然后:

strace -fp YOUR_PID

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

答案2

一种方法: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

之后,找出正在运行的程序的进程 ID(例如使用tophtop),启动一个tmux会话和一个简单的

reptyr PID

将会把正在运行的进程重新附加到你的tmuxbash 会话。

答案3

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

答案4

正如已经指出的那样,我建议将来使用tmux或,但这只有在您事先考虑过的情况下才有效。screen

我遇到过好几次你遇到的情况。如果你保持运行的终端在办公室台式电脑上,你可以通过 SSH 进入你的电脑并启动 VNC 服务器。这样,你至少可以检查打开的终端。

相关内容