如何终止 tmux 中挂起的 ssh 会话

如何终止 tmux 中挂起的 ssh 会话

这是我的设置:

Workstation==ssh=>jumphost(tmux with split panes)==ssh=>server1
                                                 ==ssh=>server2

如果与服务器的两个连接中的任何一个变得无响应,我该如何终止它们?

发送~.不是一个方便的选项,因为它会终止第一个 ssh 会话。

答案1

为了终止嵌套 ssh 会话而不影响父会话,内部会话需要接收转义密钥。

~您可以通过按 Enter 键,然后按then来启动转义序列~;这会向内部会话发送转义。然后你可以跟进它来.终止内部会话。

答案2

我认为这个另一个答案很好,这可能是我的第一选择。另一种方法是使用 tmux 提供的功能,如下所示:

键入prefix, x(默认prefixCtrl+ b)。确认您要终止该窗格。

在窗格中运行的进程将得到叹息。无论是否ssh是服务器的直接子级,如果和tmux之间有 shell ,都应该收到 SIGHUP 并退出*。tmuxsshssh

可能还有其他进程会收到 SIGHUP,特别是tmux和之间的 shell(如果有) ssh。问问自己这是否适合你。

虽然另一个答案特定于 ssh 并且不依赖于 tmux,但此答案特定于 tmux 并且不依赖于 ssh(它可用于终止 tmux 内的其他程序)。


* 除非它是用nohup什么来运行的。主要工作nohup是使进程免受 SIGHUP 的影响。

相关内容