utrata sesji tmux w nieznanych punktach, przyczyna i możliwe rozwiązanie?

27

Próbowałem ponownie dołączyć do długotrwałej sesji Tmux, aby sprawdzić aplikację sieci Web w języku Python. Jednak tmux attachtwierdzi, że nie ma uruchomionej sesji i pspokazuje tmuxproces (pierwszy wiersz), ale ze znakiem zapytania zamiast ptsliczby.

Co to znaczy --- czy ta sesja tmux została trwale utracona i co mogło ją spowodować? Czy jest jeszcze sposób, aby spojrzeć na bieżący stan procesu python, odrodzonego w sesji tmux i uruchomionego w pts/19(drugi wiersz)?

[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
źródło
Co tmux lspokazuje
jasonwryan
„nie udało się połączyć z serwerem: odmowa połączenia”
mhermans

Odpowiedzi:

40

Rozwiązanie dzięki uprzejmości serwisu Webfaction :

Ponieważ proces był nadal uruchomiony, problemem było usunięte gniazdo, prawdopodobnie spowodowane wyczyszczonym katalogiem tmp.

Według tmuxmapy:

Jeśli gniazdo zostanie przypadkowo usunięte, sygnał SIGUSR1 może zostać wysłany do procesu serwera tmux w celu jego odtworzenia.

Wysyłanie sygnału i załączanie działa:

killall -s SIGUSR1 tmux
tmux attach
mhermans
źródło
Używam byobu, który używa tmuxjako backend, i działało to dla mnie po tym, jak przypadkowo usunąłem gniazdo /tmp/tmux-<pid>. Dzięki!
Nicu Stiurca,
7

Brak terminala jest oznaką odłączonej sesji. Wszystkie tmuxnazwy sesji można znaleźć w ten sposób:

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

- to trochę zależy od dystrybucji. Prawie niezależny od dystrybucji (i bardziej hardkorowy) to:

lsof -n -p 16709 -a -U

gdzie 16709jest PID tmux we wpisie.

poige
źródło
id -udaje 532i /tmp/tmux-532zawiera pojedynczy plik „default”. W jaki sposób pomaga mi to dalej?
mhermans
Spróbuj tmux -S /tmp/tmux-532/default at, ale domyślna nazwa gniazda powinna być w porządku tmux at. Co mówi lsof-version?
poige
Pierwsze polecenie powoduje odpowiedź „brak sesji”. lsof -v wyjście .
mhermans
lsofjak podano w mojej odpowiedzi, stary. :)
poige
@mhermans, miałem na myśli lsof-wersję mojej odpowiedzi, nie potrzebujemy jej wersji oprogramowania. :)
poige