如何重新连接到 ssh 连接丢失的同一终端?

如何重新连接到 ssh 连接丢失的同一终端?

我通过 ssh 连接到我的服务器,并在该服务器上启动了 yocto 构建。然而,我失去了连接,现在当我重新连接时,我不知道如何查看我现有的构建进展如何?我想看到我的终端上显示的输出。

我可以看到我的进程正在运行。

$ps aux | grep tx
tx    74480  0.0  0.0   6180  2176 pts/29   R+   11:06   0:00 grep tx

如何重新连接以查看我的构建输出?请在这里帮助我。我使用的是 Debian 机器。

答案1

简短的回答:你不能,那个终端已经消失了。

当您失去连接时,系统会向您的 shell 发送一个信号,告诉 shell 您的连接已断开。 shell 反过来杀死了它的所有子进程,包括yocto构建,然后退出。这是正常的、预期的、正确的行为。

如果您希望在像这样断开连接时能够重新连接到给定的终端/shell 进程,则必须采取一些步骤才能在断开连接之前执行此操作。可以帮助解决此问题的两个工具是screentmux;它们都做(大约)相同的事情,因为它们允许您在其中运行长期存在的命令,然后与主会话断开连接,并稍后从另一个终端或登录会话重新连接到它。这里发生的情况是,当您的连接终止时,系统会向screentmux进程发送与上面相同的信号,但它不会将该信号传递给它的子进程,杀死它们并清理自己,而是简单地忽略该消息并保持它的子 shell 进程还活着。

有关如何使用这些程序的详细信息,请参阅它们的man页面。

相关内容