丢失 ssh 会话是否会终止在 tmux 中运行的命令?

丢失 ssh 会话是否会终止在 tmux 中运行的命令?

我知道这个问题很基础,但在社区中找不到完全匹配的问题。
使用 tmux 的标准流程是 - 创建会话,在其中运行命令,然后分离会话。因此现有的 ssh 终端不会终止我们的进程。

我的问题是,如果创建了 tmux 会话并在其中运行一个长命令。但是在分离之前,如果 ssh 会话终止,那么这个 tmux 会话是否会继续存在,或者它也会被终止

答案1

基本上,在丢失 ssh 连接后,子进程将收到一个SIGHUP。此信号导致tmux其自身脱离丢失的 ssh 会话。

因此即使 ssh 会话终止,tmux 的会话仍将在远程机器上保持持久。


自己测试一下:

  1. 打开终端并运行tmux
  2. 在您的“tmux”会话中运行sleep 100
  3. 打开另一个终端并运行:pkill -1 tmux
    • 现在第一个终端中的 tmux 已经关闭。
  4. 运行后tmux ls就会看到你的会话仍然在那里。
    • 或者tmux attach提起它。

我也在远程机器上测试了实际丢失 ssh 会话的情况,结果是一样的。

相关内容