我怎样才能远程观看terminal窗口?

我之前离开了办公室,并在Centos 7服务器上运行脚本。 现在我已经从家里接入,我想看看它到底在哪里。 这可能吗? 我可以从这里重新join同一个terminal窗口吗?

正如@Sven提到的,最好的select是使用screentmux 。 这些工具被称为“terminal多路复用器”。 它们允许您创build可从实际login中附加和未连接的shell会话。 这些工具不仅有助于从另一个terminal检查您的工作,还可以使用其他function,包括与其他用户共享您的会话,并确保您的命令不会在您断开互联网连接时停止。 如果你正在寻找screen ,你可以尝试search“GNU屏幕”。 这两种工具在大多数Linux系统上都可用。

通常,您将开始会话,然后在该会话中执行您的命令。 但是,如果您已经启动了该命令,则可能需要查看有关将运行命令移至屏幕会话的文章。 不过,我不build议首先在重要的事情上尝试一下。 这个问题可能有些用处:

将正在运行的进程移至屏幕

如果你只想检查过程是否正在运行,我最喜欢的工具将是strace。 这个工具允许你查看进程所做的每个内核调用。 理解输出可能需要一些技巧,但是至less应该给出一个stream程是否正在运行的观点,并且如果你观察得足够近,可能会捕获打开的文件名。 要做到这一点,首先findPID,也许通过searchps aux|grep yourcommand ,然后:

 strace -fp YOUR_PID 

你可以^ C摆脱这一点。 它可能不允许你重新附加,但如果你只是想知道它在做什么,这应该是足够的。

一种方法:TMUX

正如大多数答案已经指出的那样 – 如果在现有的SSH会话中,您可以使用tmux (或screen )与命令

 tmux 

你现在正在一个新的bash会话中,你可以开始你的程序/命令。 你可以随时closures它(而不是CTRL + D,而不是closures窗口),稍后通过在同一台机器上build立一个SSH连接给同一个用户并写命令

 tmux attach 

您也可以通过给他们的名字进行多个 tmux会话

 tmux new -s myname 

您可以查看您的用户所有打开的tmux会话列表

 tmux ls 

并附加到一个名为tmux会话

 tmux a -t myname 

在这里find一个全面的tmux cheat sheet

对于正在运行的程序

到目前为止的答案似乎并没有意识到这个事实,你可以将已经运行的进程移动到另一个tmux / screen因为这个答案指出。 做这个工作的程序叫做reptyr ,在Ubuntu / Debian下你可以用一个简单的方法安装它

 sudo apt-get install reptyr 

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

 reptyr PID 

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

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

正如已经指出的那样,我build议将来使用tmux或者screen ,但是只有事先考虑过才能起作用。

我已经遇到过好几次了。 如果您运行的terminal在您的办公桌面PC上,您可以通过SSH连接到您的PC并启动VNC服务器。 这样,你至less可以查看开放的terminal。

我一直在使用byobu ,我觉得非常强大。 Byobu是一个基于GPLv3开源文本的窗口pipe理器和terminal复用器。

所以你可以通过input“byobu”来打开一个byobu会话。 然后,您可以使用Ctrl + F2创build新选项卡,然后在Ctrl + F3之间移动,Ctrl + F4之间移动。 您可以使用Ctrl + F6closures选项卡,或使用Shift + F6从会话中分离。 您稍后再次通过input“byobu”重新join会话。

Byobu支持垂直和水平分割,全屏和其他奇特function。 它可以在Ubuntu / Debian,CentOS / Fedora / RedHat和FreeBSD上使用。

正如大家所提到的,可以使用tmux。 屏幕在您想与多人共享屏幕的位置无用。

最重要的是,我build议大家试试https://tmate.io/来临时访问,甚至到本地机器。 tmate支持以上所有:)

https://tmate.io/