Riepilogo : sto cercando di capire perché la mia sessione di tmux muore quando mi disconnetto da ssh
Dettagli :
Ho tmux installato su un sistema Arch Linux. Quando inizio una sessione di tmux posso staccarmi da essa e quindi ricollegarmi mentre la sessione ssh è attiva. Ma se finisco la mia sessione ssh, la sessione tmux viene uccisa.
So che questo non è il comportamento normale perché ho un altro sistema in cui la sessione tmux continua a funzionare anche se la sessione ssh è terminata e posso collegarmi alla sessione tmux dopo aver stabilito una nuova connessione ssh. Il sistema che presenta un problema e quello che funziona correttamente hanno configurazioni molto simili, quindi non sono sicuro di cosa controllare.
Sto eseguendo tmux versione 1.9a. Il sistema che ha un problema (per il quale ho accesso root) ha una versione del kernel Linux 3.17.4-1 e il sistema che funziona correttamente ha la versione 3.16.4-1-ARCH del kernel (non ho root su quello sistema). Dubito che la versione del kernel sia la fonte del problema, questa è solo una differenza che ho notato.
Ho pensato di chiedere se qualcuno avesse riscontrato un problema simile e fosse a conoscenza di una possibile soluzione.
I passaggi precisi che portano al problema sono:
- ssh alla macchina
- corri
tmux
per avviare tmux ctrl-B D
per staccare (a questo punto potrei ricollegarmi contmux attach
- chiudi sessione ssh (a questo punto la sessione tmux viene interrotta, sono stato in grado di osservarlo quando ho effettuato l'accesso come root in un altro terminale)
- riconnettersi con ssh ed eseguire
tmux attach
e ottengo il messaggiono sessions
etmux ls
ritorna in esecuzionefailed to connect to server: Connection refused
. Questo ha senso perché il servizio non è in esecuzione. Ciò che non ha senso per me è il motivo per cui viene ucciso nel passaggio 4 quando mi disconnetto dalla sessione SSH.
dati strace:
In risposta a uno dei commenti ho usato strace per vedere quali sistemi chiama il processo del server tmux. Quando esco dalla mia sessione ssh (digitando exit
o con ctrl-d
) sembra che il processo tmux venga interrotto. Ecco uno snippet della parte finale dell'output di strace.
poll([{fd=4, events=POLLIN}, {fd=11, events=POLLIN}, {fd=6, events=POLLIN}], 3, 424) = ? ERESTART_RESTARTBLOCK (Interrupted by signal)
--- SIGTERM {si_signo=SIGTERM, si_code=SI_USER, si_pid=1, si_uid=0} ---
sendto(3, "\17", 1, 0, NULL, 0) = 1
+++ killed by SIGKILL +++
Ho confrontato questo con un sistema diverso in cui tmux funziona correttamente e su quel sistema il processo tmux continua a funzionare anche dopo l'uscita. Quindi la causa principale sembra essere che il processo tmux si sta chiudendo quando chiudo la sessione ssh. Dovrò dedicare un po 'di tempo alla risoluzione dei problemi per capire perché, ma ho pensato di aggiornare la mia domanda poiché il suggerimento per lo strace era utile.