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