¿Sesión tmux perdida en pts desconocidos, causa y posible solución?

¿Sesión tmux perdida en pts desconocidos, causa y posible solución?

Estaba intentando volver a conectarme a una sesión tmux de larga duración para verificar una aplicación web de Python. Sin embargo, tmux attachafirma que no hay ninguna sesión en ejecución y psmuestra un tmuxproceso (primera línea), pero con un signo de interrogación en lugar del ptsnúmero.

¿Qué significa esto? ¿Esta sesión tmux se perdió permanentemente y qué pudo haberla causado? ¿Todavía hay una manera de ver el estado actual del proceso de Python, generado en la sesión tmux y ejecutándose en pts/19(segunda línea)?

[mhermans@web314 ~]$ ps -ef | grep mhermans
mhermans 16709     1  0 Mar04 ?        00:26:32 tmux
mhermans  8526 16710  0 Mar04 pts/19   00:20:04 python2.7 webapp.py
root      9985  6671  0 10:18 ?        00:00:00 sshd: mhermans [priv]
mhermans 10028  9985  0 10:18 ?        00:00:00 sshd: mhermans@pts/16
mhermans 10030 10028  0 10:18 pts/16   00:00:00 -bash
mhermans 16247 10030  6 10:28 pts/16   00:00:00 ps -ef
mhermans 16276 10030  0 10:28 pts/16   00:00:00 grep mhermans
mhermans 16710 16709  0 Mar04 pts/19   00:00:00 -bash
mhermans 16777 16709  0 Mar04 pts/21   00:00:00 -bash

Respuesta1

Solución cortesía deSoporte de Webfaction:

Como el proceso aún se estaba ejecutando, el problema era un socket eliminado, posiblemente causado por un directorio tmp eliminado.

Según el tmuxmapa:

Si el socket se elimina accidentalmente, la señal SIGUSR1 puede enviarse al proceso del servidor tmux para recrearla.

Entonces enviar la señal y adjuntar funciona:

killall -s SIGUSR1 tmux
tmux attach

Respuesta2

La ausencia terminal es un signo de sesión desapegada. Y todos tmuxlos nombres de sus sesiones se pueden encontrar así:

ls $TMP/tmux-$(id -u)ols /var/run/tmux/tmux-$(id -u)

– esto depende un poco de la distribución. Distribución casi independiente (y más hardcore) sería:

lsof -n -p 16709 -a -U

¿Dónde 16709está el PID de tmux en su listado?

Respuesta3

Así es comoesta respuesta anterior aquíme ayudó (¡guau!). Estaba tratando de resolverexactamentela situación en la que estoy conectado a un Tmux, que puedo ver en tmux ls,peroen ps, puedo ver tambiénotrotmux, que no figura en la lista, tmux lspor lo tanto, no puedo adjuntarlo usando su nombre (tmux attach -t myOldbas)

Aquí están los detalles completos. Procesos:

71358     1849  9617  0 Sep04 pts/29   00:00:00 /bin/bash
71358     2528  9617  0 Aug31 pts/25   00:00:00 /bin/bash
71358     9617     1  0 Aug31 ?        00:08:55 tmux new -s myOld
71358     9618  9617  0 Aug31 pts/20   00:00:00 /bin/bash
71358    20199 33189  0 Sep16 pts/27   00:00:00 vim log
71358    20415 32257  0 Sep16 pts/30   00:00:00 /bin/bash
71358    24735 32257  0 Sep16 pts/33   00:00:00 /bin/bash
71358    32257     1  0 Sep16 ?        00:04:02 tmux new -s myses

Ahora,el bit lsof es lo que realmente me ayudó--cuando lo haces porambos procesos, en mi caso 32257 (el que puedo ver), y 9617 (el antiguo)

/usr/sbin/lsof -n -p 32257 -a -U
COMMAND   PID             USER   FD   TYPE             DEVICE SIZE/OFF      NODE NAME
..
tmux    32257 uzer.buzer          7u  unix 0xffff881ff0c73480      0t0 995795763 /tmp/uzer.buzer/tmux-71358/default

Sin embargo, cuando usé el PID antiguo, vi lo siguiente

/usr/sbin/lsof -n -p 9617 -a -U

tmux    9617 uzer.buzer          7u  unix 0xffff881ff0c73480      0t0 995795763 /tmp/tmux-71358/default

Aviso,¿En qué se diferencia la última ruta del socket? Afortunadamente, eso es todo lo que necesitaba y luego ejecuté el comando adjuntar con un socket explícito:

tmux -S /tmp/tmux-71358/default at

y estuve dentro!!

Respuesta4

Para las personas que se encuentren con este hilo más adelante;

Si utiliza sudopara ejecutar un script o algo así, la tmuxsesión aparece en la raíz, no en el usuario que usó sudo, ya que las acciones que siguen a sudo se realizan en la raíz.

Para remediar esto, use sudo tmux ao tmuxcomo root para recuperar el control de su sesión tmux.

información relacionada