gpt4 book ai didi

session - 如何在没有 screen 或 tmux 的情况下重新连接到意外断开的 ssh session

转载 作者:行者123 更新时间:2023-12-02 10:25:16 25 4
gpt4 key购买 nike

我知道这些问题多年来一直被问到,而答案通常是 Screentmux

如果我知道我会长时间离开 session ,或者网络太差而无法维持可靠的连接,我肯定会在开始时使用screen

主要问题是当我启动某个 session 时发现它必须持续很长时间,或者连接意外丢失。在后一种情况下,通常当我立即启动另一个 session 时,我可以发现之前的进程当时没有被杀死,但我只是没有办法重新连接到它们的终端。

所以我想知道是否有可能防止正常进程在意外断开 SSH session 后很长时间内被终止。最重要的是我可以重新连接到他们的终端而无需提前在 screen 中启动它们

如果没有,是否可以将已启动的裸 ssh session 移动到新的 Screen session 中以便稍后重新连接?

最佳答案

我不相信没有像 screen 这样的东西这是可能的。一旦你的伪 TTY 丢失,我几乎可以肯定它无法从不同的 shell 中恢复(至少在没有一些 narly hack 的情况下)。

就将现有流程添加到新 screen 而言,我认为这是可能的。请尝试此处的说明:

http://monkeypatch.me/blog/move-a-running-process-to-a-new-screen-shell.html

The first thing to do is to suspend the process. In my case, Irssi can be suspended by typing Ctrl + Z.

Secondly, resume the process in background:

$ bg

Now, we will detach the process from its parent (the shell). So, when the parent process will be terminated, the child (Irssi) will be able to continue. For this, we use the disown builtin:

$ disown irssi

Launch a screen session:

$ screen

As we are in a screen session, we will retrieve the irssi process. To do so, we use the reptyr command which take a pid:

$ reptyr

To avoid the tedious pid research, we can use the pgrep command:

$ reptyr $(pgrep irssi)

Now the process is in a screen shell, we can safely detach our session and no longer worry about killing our X server or close our ssh connection.

You'll need reptyr for this.

选项 2:

我怀疑您可能正在尝试解决错误的问题。如果您的 SSH 连接断开,为什么不解决这个问题呢?您可以通过调整连接设置来将 SSH 设置为对超时和断开连接具有极高的容忍度。

在您的客户端上,在 $HOME/.ssh/config 中添加:

ServerAliveInterval 60
ServerAliveCountMax 5

现在,即使服务器 5 分钟内没有响应,您的 session 也不会超时。

关于session - 如何在没有 screen 或 tmux 的情况下重新连接到意外断开的 ssh session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20135911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com