Resumen : estoy tratando de averiguar por qué mi sesión tmux muere cuando me desconecto de ssh
Detalles :
Tengo tmux instalado en un sistema Arch Linux. Cuando comienzo una sesión de tmux, puedo desconectarme y luego volver a adjuntarla mientras la sesión ssh está activa. Pero si termino mi sesión ssh, entonces la sesión tmux se mata.
Sé que este no es el comportamiento normal porque tengo otro sistema donde la sesión tmux continúa ejecutándose incluso si la sesión ssh finaliza y puedo conectarme a la sesión tmux después de establecer una nueva conexión ssh. El sistema que tiene un problema y el que funciona correctamente tiene configuraciones muy similares, por lo que no estoy seguro de qué verificar.
Estoy ejecutando tmux versión 1.9a. El sistema que tiene un problema (para el que tengo acceso de root) tiene una versión de kernel de Linux de 3.17.4-1 y el sistema que funciona correctamente tiene la versión de kernel 3.16.4-1-ARCH (no tengo root en eso sistema). Sin embargo, dudo que la versión del kernel sea la fuente del problema, esa es solo una diferencia que noté.
Pensé en preguntar si alguien ha visto un problema similar y sabe de una posible solución.
Los pasos precisos que conducen al problema son:
- ssh a la máquina
- corre
tmux
para iniciar tmux ctrl-B D
para separar (en este punto podría volver a conectar contmux attach
- cierre la sesión ssh (en este punto se cancela la sesión tmux, pude observar esto cuando inicié sesión como root en un terminal diferente)
tmux attach
me vuelvo a conectar con ssh y ejecuto y recibo el mensajeno sessions
ytmux ls
devuelve ejecutandofailed to connect to server: Connection refused
. Esto tiene sentido porque el servicio no se está ejecutando. Lo que no tiene sentido para mí es por qué se mata en el paso 4 cuando me desconecto de la sesión ssh.
datos de strace:
En respuesta a uno de los comentarios, utilicé strace para ver qué llamadas de sistemas realiza el proceso del servidor tmux. Parece que cuando salgo de mi sesión ssh (escribiendo exit
o con ctrl-d
) que el proceso tmux está siendo eliminado. Aquí hay un fragmento de la parte final de la salida de strace.
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 +++
Comparé esto con un sistema diferente donde tmux funciona correctamente y en ese sistema el proceso tmux continúa ejecutándose incluso después de salir. Entonces, la causa raíz parece ser que el proceso tmux está finalizando cuando cierro la sesión ssh. Tendré que pasar un tiempo resolviendo esto para entender por qué, pero pensé que actualizaría mi pregunta ya que la sugerencia de strace fue útil.