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 attach
afirma que no hay ninguna sesión en ejecución y ps
muestra un tmux
proceso (primera línea), pero con un signo de interrogación en lugar del pts
nú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 tmux
mapa:
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 tmux
los 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 16709
está 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 ls
por 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 sudo
para ejecutar un script o algo así, la tmux
sesió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 a
o tmux
como root para recuperar el control de su sesión tmux.