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

27

Estaba tratando de volver a conectarme a una sesión tmux de larga duración para verificar en una aplicación web de Python. Sin embargo, tmux attachafirma que no hay una 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 de tmux se pierde permanentemente y qué podría 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
mhermans
fuente
¿Qué tmux lsmuestra?
jasonwryan
"no se pudo conectar al servidor: conexión rechazada"
mhermans

Respuestas:

40

Solución cortesía de Webfaction-support :

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

Según el tmuxmapage:

Si el socket se retira accidentalmente, la señal SIGUSR1 se puede enviar al proceso del servidor tmux para recrearlo.

Entonces enviar la señal y adjuntar trabajos:

killall -s SIGUSR1 tmux
tmux attach
mhermans
fuente
Estoy usando byobu, que se usa tmuxcomo back-end, y esto funcionó para mí después de que eliminé accidentalmente el zócalo /tmp/tmux-<pid>. ¡Gracias!
Nicu Stiurca
7

La ausencia terminal es un signo de sesión separada. Y todos los tmuxnombres de sus sesiones se pueden encontrar así:

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

- Esto es un poco dependiente de la distribución. Casi independiente de la distribución (y más hardcore) sería:

lsof -n -p 16709 -a -U

donde 16709está el PID de tmux en tu listado.

poige
fuente
id -uda 532y /tmp/tmux-532contiene un solo archivo "predeterminado". ¿Cómo me ayuda esto más?
mhermans
Intente tmux -S /tmp/tmux-532/default at, pero el nombre de socket predeterminado debería estar bien con tmux at. ¿Qué dice lsof-version?
Poige
El primer comando da como resultado una respuesta "sin sesiones". lsof -v salida .
mhermans
lsofcomo se indica en mi respuesta, amigo. :)
Poige
@hermans, quise decir lsof-versión de mi respuesta, no necesitamos su versión de software. :)
Poige