Come sbloccare il terminale quando muore la connessione SSH?

5

Sto usando Mac 10.9.5 con shell bash. Occasionalmente quando eseguo il ssh su un'altra macchina e poi la connessione muore (ad es. Internet va giù o mi muovo in una nuova posizione), la finestra del terminale con la sessione SSH aperta è congelato e l'unico modo in cui mi sembra di poter andare avanti è chiuderlo e iniziare una nuova sessione.

C'è un modo per configurare le cose in modo che se la connessione della sessione SSH muore, tornerò alla mia normale shell bash, come era prima che eseguissi il mio comando SSH?

    
posta Dave 06.03.2015 - 23:01
fonte

1 risposta

6

Puoi sospendere e poi terminare il processo ssh bloccato. Per fare ciò devi emettere la sequenza di escape, sospendere il processo ssh e quindi usare kill -9 per uccidere quel processo.

La chiave di escape predefinita per ssh che include OS X il carattere ~ . Devi inserirla immediatamente dopo una nuova riga per ssh per rispettarla. E poi la sequenza di tasti Control - z è usata per sospendere e fare lo sfondo di un'attività in bash.

Quindi prova questa sequenza di tasti:

Return

~

Controllo - z

Se funziona, vedrai qualcosa di simile:

myhost.local:~ |ruby-2.2.0|
> ssh someremotehost
Last login: Fri Mar  6 14:15:28 2015 from myhost

someremotehost:~ |ruby-2.2.0|
> ~^Z [suspend ssh]

[1]  + 48895 suspended  ssh myremotehost

Questa linea di output:

[1]  + 48895 suspended  ssh myremotehost

indica l'ID di processo del processo ssh sulla tua macchina. È 48895 in questo esempio. Quel processo è ancora in esecuzione, è stato appena sospeso e preinstallato. Devi ucciderlo.

Puoi farlo con il comando kill . Vuoi eliminarlo con i pregiudizi, quindi utilizza l'opzione -9 quando chiami kill in questo modo:

myhost.local:~ |ruby-2.2.0|
> kill -9 48895
[1]  + 48895 killed     ssh someremotehost

Usa il PID del tuo ssh processo quando chiami quel comando al posto del% pid% PID che ho usato sopra.

E riavrai il tuo prompt.

In alternativa, puoi aprire una seconda finestra di Terminale e usare 48895 per trovare il processo ps nell'elenco dei processi ed emettere la chiamata ssh contro il PID. Tuttavia, questo tipo di sconfigge il processo di ottenere il tuo prompt indietro nella finestra del terminale originale, non è vero?

    
risposta data 06.03.2015 - 23:28
fonte

Leggi altre domande sui tag