我之前离开了办公室,并在Centos 7服务器上运行脚本。 现在我已经从家里接入,我想看看它到底在哪里。 这可能吗? 我可以从这里重新join同一个terminal窗口吗?
正如@Sven提到的,最好的select是使用screen或tmux 。 这些工具被称为“terminal多路复用器”。 它们允许您创build可从实际login中附加和未连接的shell会话。 这些工具不仅有助于从另一个terminal检查您的工作,还可以使用其他function,包括与其他用户共享您的会话,并确保您的命令不会在您断开互联网连接时停止。 如果你正在寻找screen ,你可以尝试search“GNU屏幕”。 这两种工具在大多数Linux系统上都可用。
通常,您将开始会话,然后在该会话中执行您的命令。 但是,如果您已经启动了该命令,则可能需要查看有关将运行命令移至屏幕会话的文章。 不过,我不build议首先在重要的事情上尝试一下。 这个问题可能有些用处:
将正在运行的进程移至屏幕
如果你只想检查过程是否正在运行,我最喜欢的工具将是strace。 这个工具允许你查看进程所做的每个内核调用。 理解输出可能需要一些技巧,但是至less应该给出一个stream程是否正在运行的观点,并且如果你观察得足够近,可能会捕获打开的文件名。 要做到这一点,首先findPID,也许通过searchps aux|grep yourcommand ,然后:
strace -fp YOUR_PID
你可以^ C摆脱这一点。 它可能不允许你重新附加,但如果你只是想知道它在做什么,这应该是足够的。
正如大多数答案已经指出的那样 – 如果在现有的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(例如top或htop ),启动一个tmux会话并简单
reptyr PID
将重新连接正在运行的进程到您的tmux bash会话。
将来,您可以使用screen或tmux ,然后重新连接一个正在运行的会话。
正如已经指出的那样,我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支持以上所有:)