Hai perso la sessione in punti sconosciuti, causa e possibile soluzione?


27

Stavo provando a ricollegarmi a una sessione di tmux di lunga durata per verificare un'applicazione web di Python. Tuttavia, tmux attachafferma che non esiste alcuna sessione in esecuzione e psmostra un tmuxprocesso (prima riga), ma con un punto interrogativo anziché il ptsnumero.

Cosa significa --- questa sessione di tmux è stata definitivamente persa e cosa avrebbe potuto causarla? Esiste ancora un modo per esaminare lo stato corrente del processo Python, generato nella sessione di tmux e in esecuzione pts/19(seconda riga)?

[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

Cosa tmux lsmostra?
Jasonwryan,

Risposte:


40

Soluzione per gentile concessione del supporto Webfaction :

Poiché il processo era ancora in esecuzione, il problema era un socket eliminato, probabilmente causato da una directory tmp eliminata.

Secondo il tmuxmapage:

Se il socket viene rimosso accidentalmente, il segnale SIGUSR1 potrebbe essere inviato al processo del server tmux per ricrearlo.

Quindi l'invio del segnale e il collegamento delle opere:

killall -s SIGUSR1 tmux
tmux attach

Sto usando byobu, che usa tmuxcome backend, e questo ha funzionato per me dopo che ho accidentalmente eliminato il socket da /tmp/tmux-<pid>. Grazie!
Nicu Stiurca,

7

L'assenza del terminale è un segno di sessione separata. E tutti i tmuxnomi delle sessioni possono essere trovati così:

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

- questo è un po 'distro-dipendente. Quasi indipendente dalla distro (e più hardcore) sarebbe:

lsof -n -p 16709 -a -U

dove si 16709trova il PID di tmux nella tua scheda.


id -u532e /tmp/tmux-532contiene un singolo file "predefinito". In che modo questo mi aiuta ulteriormente?
mhermans,

Prova tmux -S /tmp/tmux-532/default at, ma il nome socket predefinito dovrebbe andare bene con tmux at. Cosa dice lsof-version?
poige,

Il primo comando genera una risposta "nessuna sessione". lsof -v uscita .
mhermans,

lsofcome indicato nella mia risposta, amico. :)
poige,

@mhermans, intendevo la versione lsof della mia risposta, non abbiamo bisogno della sua versione del software. :)
poige,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.