我知道这个问题很基础,但在社区中找不到完全匹配的问题。
使用 tmux 的标准流程是 - 创建会话,在其中运行命令,然后分离会话。因此现有的 ssh 终端不会终止我们的进程。
我的问题是,如果创建了 tmux 会话并在其中运行一个长命令。但是在分离之前,如果 ssh 会话终止,那么这个 tmux 会话是否会继续存在,或者它也会被终止?
答案1
基本上,在丢失 ssh 连接后,子进程将收到一个SIGHUP
。此信号导致tmux
其自身脱离丢失的 ssh 会话。
因此即使 ssh 会话终止,tmux 的会话仍将在远程机器上保持持久。
自己测试一下:
- 打开终端并运行
tmux
。 - 在您的“tmux”会话中运行
sleep 100
。 - 打开另一个终端并运行:
pkill -1 tmux
。- 现在第一个终端中的 tmux 已经关闭。
- 运行后
tmux ls
就会看到你的会话仍然在那里。- 或者
tmux attach
提起它。
- 或者
我也在远程机器上测试了实际丢失 ssh 会话的情况,结果是一样的。