Summary: I'm trying to figure out why my tmux session dies when I disconnect from ssh
Details:
I have tmux installed on an Arch Linux system. When I start a tmux session I can detach from it and then attach again while the ssh session is active. But if I end my ssh session then the tmux session gets killed.
I know this is not the normal behavior because I have other system where the tmux session continues running even if the ssh session is ended and I can attach to the tmux session after establishing a new ssh connection. The system that has a problem and the one that works correctly have very similar configurations so I'm not sure what to check.
I'm running tmux version 1.9a. The system that has a problem (that I have root access for) has a Linux kernel version of 3.17.4-1 and the system that works correct has kernel version 3.16.4-1-ARCH (I don't have root on that system). I doubt that the kernel version is the source of the problem though, that's just one difference I noticed.
I thought I'd ask to see if anyone has seen a similar problem and knows of a possible solution.
The precise steps that lead to the problem are:
- ssh to machine
- run
tmux
to start tmux ctrl-B D
to detach (at this point I could reattach withtmux attach
- close ssh session (at this point the tmux session is killed, I've been able to observe this when I'm logged in as root in a different terminal)
- reconnect with ssh and run
tmux attach
and I get the messageno sessions
and runningtmux ls
returnsfailed to connect to server: Connection refused
. This makes sense because the serve is not running. What doesn't make sense to me is why it gets killed in step 4 when I disconnect from the ssh session.
strace data:
In response to one of the comments I used strace to see what systems calls the tmux server process makes. It looks like when I exit my ssh session (by typing exit
or with ctrl-d
) that the tmux process is being killed. Here's a snippet of the final part of the strace output.
poll([{fd=4, events=POLLIN}, {fd=11, events=POLLIN}, {fd=6, events=POLLIN}], 3, 424) = ? ERESTART_RESTARTBLOCK (Interrupted by signal)
--- SIGTERM {si_signo=SIGTERM, si_code=SI_USER, si_pid=1, si_uid=0} ---
sendto(3, "\17", 1, 0, NULL, 0) = 1
+++ killed by SIGKILL +++
I compared this with a different system where tmux works properly and on that system the tmux process continues running even after I exit. So the root cause appears to be that the tmux process is being terminated when I close the ssh session. I'll need to spend some time troubleshooting this to figure out why, but I thought I would update my question since the strace suggestion was useful.