这是我的设置:
Workstation==ssh=>jumphost(tmux with split panes)==ssh=>server1
==ssh=>server2
如果与服务器的两个连接中的任何一个变得无响应,我该如何终止它们?
发送~.
不是一个方便的选项,因为它会终止第一个 ssh 会话。
答案1
为了终止嵌套 ssh 会话而不影响父会话,内部会话需要接收转义密钥。
~
您可以通过按 Enter 键,然后按then来启动转义序列~
;这会向内部会话发送转义。然后你可以跟进它来.
终止内部会话。
答案2
我认为这个另一个答案很好,这可能是我的第一选择。另一种方法是使用 tmux 提供的功能,如下所示:
键入prefix, x(默认prefix为Ctrl+ b)。确认您要终止该窗格。
在窗格中运行的进程将得到叹息。无论是否ssh
是服务器的直接子级,如果和tmux
之间有 shell ,都应该收到 SIGHUP 并退出*。tmux
ssh
ssh
可能还有其他进程会收到 SIGHUP,特别是tmux
和之间的 shell(如果有) ssh
。问问自己这是否适合你。
虽然另一个答案特定于 ssh 并且不依赖于 tmux,但此答案特定于 tmux 并且不依赖于 ssh(它可用于终止 tmux 内的其他程序)。
* 除非它是用nohup
什么来运行的。主要工作nohup
是使进程免受 SIGHUP 的影响。