session tmux perdue dans des points inconnus, cause et solution possible?

27

J'essayais de me rattacher à une session tmux de longue durée pour vérifier une application Web python. Cependant, tmux attachaffirme qu'il n'y a pas de session en cours et psmontre un tmuxprocessus (première ligne), mais avec un point d'interrogation au lieu du ptsnuméro.

Qu'est-ce que cela signifie --- cette session tmux est-elle définitivement perdue et qu'est-ce qui aurait pu en être la cause? Existe-t-il encore un moyen de regarder l'état actuel du processus python, généré dans la session tmux et fonctionnant en pts/19(deuxième ligne)?

[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
Hermans
la source
Que tmux lsmontre-t-on?
jasonwryan
"échec de connexion au serveur: connexion refusée"
mhermans

Réponses:

40

Solution gracieuseté du support Webfaction :

Comme le processus était toujours en cours d'exécution, le problème était une socket supprimée, probablement causée par un répertoire tmp purgé.

Selon le tmuxmappage:

Si le socket est accidentellement supprimé, le signal SIGUSR1 peut être envoyé au processus du serveur tmux pour le recréer.

Donc, envoyer le signal et attacher des œuvres:

killall -s SIGUSR1 tmux
tmux attach
Hermans
la source
J'utilise byobu, qui utilise tmuxcomme backend, et cela a fonctionné pour moi après avoir accidentellement supprimé le socket de /tmp/tmux-<pid>. Merci!
Nicu Stiurca
7

L'absence de terminal est un signe de session détachée. Et tous les tmuxnoms de vos sessions peuvent être trouvés ainsi:

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

- c'est un peu distro-dépendant. Presque indépendant de la distribution (et plus hardcore) serait:

lsof -n -p 16709 -a -U

16709est le PID de tmux dans votre liste.

poige
la source
id -udonne 532et /tmp/tmux-532contient un seul fichier "par défaut". Comment cela peut-il m'aider davantage?
mhermans
Essayez tmux -S /tmp/tmux-532/default at, mais le nom de socket par défaut devrait être correct tmux at. Que dit lsof-version?
poige
La première commande entraîne une réponse «pas de sessions». lsof -v sortie .
mhermans
lsofcomme indiqué dans ma réponse, mec. :)
poige
@mhermans, je voulais dire lsof-version de ma réponse, nous n'avons pas besoin de sa version logicielle. :)
poige