此命令始终有效(使用 sh 或 bash):
ssh -t HOST sh -c "tmux a 2>/dev/null || tmux"
这些方法大约有一半的时间会失败:
ssh -t HOST -- "tmux a 2>/dev/null || tmux"
ssh -t HOST "tmux a 2>/dev/null || tmux"
tmux 出现错误,或者server exited unexpectedly
或lost server
。 (测试时没有打开 tmux 会话,因此它始终运行这两个命令。)
为什么他们会失败,而且只是有时失败,但并非总是失败?
答案1
我想我找到了答案:
attach-session [-dErx] [-c working-directory] [-t target-session] (alias: attach) If no server is started, attach-session will attempt to start it; this will fail unless sessions are created in the configuration file.
tmux a
不仅尝试连接,还启动 tmux 服务器(失败并开始关闭)。- 该
tmux
命令尝试创建一个新会话。有时服务器进程tmux a
仍然存在,因此它与该服务器通信 - 最后,服务器进程退出并
tmux
失败并显示server exited unexpectedly
消息。