J'essayais de rattacher à une session tmux de longue durée pour vérifier une application web python. Cependant, tmux attach
qu'il n'y a pas de session en cours d'exécution et ps
montre un process tmux
(première ligne), mais avec un point d'interrogation au lieu du numéro de pts
.
Qu'est-ce que cela signifie — est-ce que cette session tmux est définitivement perdue et qu'est-ce qui pourrait l'avoir causé? Existe-t-il encore un moyen d'examiner l'état actuel du process python, généré dans la session tmux et exécuté dans 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
Solution gracieuseté de Webfaction-support :
Comme le process était toujours en cours d'exécution, le problème était un socket supprimé, possiblement causé par un directory tmp-purged.
Selon le tmux
tmux:
Si le socket est accidentellement retiré, le signal SIGUSR1 peut être envoyé au process du server tmux pour le recréer.
Donc, envoyer le signal et attacher des œuvres:
killall -s SIGUSR1 tmux tmux attach
L'absence du terminal est un signe de session détachée. Et tous vos noms de session tmux
peuvent être trouvés ainsi:
ls $TMP/tmux-$(id -u)
ls /var/run/tmux/tmux-$(id -u)
ls $TMP/tmux-$(id -u)
ls /var/run/tmux/tmux-$(id -u)
– c'est un peu dépendant de la dissortingbution. Presque distro-indépendant (et plus hardcore) serait:
lsof -n -p 16709 | awk '{if($5 == "unix") print;}'
où 16709
est le PID de tmux dans votre list.