Esci dalla shell con il collegamento (non digitando exit) che chiude correttamente la sessione


12

Uso un comando ProxyJump per un numero di sessioni ssh che uso quotidianamente, e cambio anche molto utente su queste sessioni e dover digitare exit3 o 4 volte di seguito non è troppo divertente.

Sono a conoscenza di newline+ ~+ .per terminare una sessione ssh, devo ancora controllare se termina amichevolmente come exitfarebbe, ma come si fa a uscire da tutte le sessioni nella shell corrente con un singolo comando o collegamento in modo tale che digitando exit3 o 4 volte nel mio caso diventa una cosa sola?


2
~.disconnette semplicemente il tuo client SSH (è utile quando la rete è scomparsa, per esempio). Normalmente, il demone SSH lo riconoscerà e segnalerà la sua sessione SIGHUP, quindi non è esattamente come uscire normalmente dalla shell (ma è utile se non è possibile ottenere alcuna risposta dalla shell).
Toby Speight,

Risposte:


29

Ctrl- Duscirà da una shell in molti casi. È più veloce della digitazione exit Enter. Non è ancora un singolo comando per terminare tutto, ma tenere premuto Ctrle colpire Dpiù volte è più facile e veloce. Non sono sicuro di quanto sia prezioso per il tuo caso d'uso.

Discusso in dettaglio qui .


2
La fermata successiva è unix.stackexchange.com/a/182071/5132 , e la fermata successiva è l'ulteriore lettura lì. (-:
JdeBP,

2
Fai attenzione con CTRL + D. In bash, se hai inserito dei caratteri nel tuo prompt, premendo CTRL + D lo eseguirai allo stesso modo di Enter. In altre parole, non digitare un rmcomando e quindi premere CTRL + D se non si desidera eseguirlo. Non vedo questo comportamento in ksh.
Peschke,

2
@Peschke Su ogni sistema che abbia mai usato Ctrl + D non fa nulla se ho digitato qualcosa. Non ho mai visto il comportamento che descrivi.
John Kugelman,

1
@JohnKugelman Ho testato e confermato il comportamento al momento del mio commento con bash su RHEL 7.5.
Peschke,

3
Peschke sta utilizzando i vicollegamenti di input del terminale.
JdeBP

5

Digitare in ~.realtà fa il trucco di chiudere tutte le connessioni "nidificate" fino al più profondo.

Lo fa con l'uscita amichevole che desideri purché tutte le tue shell siano configurate per gestire SIGHUP come una morte aggraziata. Bash lo fa per impostazione predefinita. È possibile controllare facilmente l'uscita amichevole per il set-up da parte ad esempio, vedere se i .bash_historyfile delle sessioni più profondi vengono correttamente aggiornate dopo il ~., o se si impostano i bash-es di non aggiornare .bash_history all'uscita allora si potrebbe impostare una trapsulla Esci dall'evento (o nel tuo ~/.bash_logout) con un comando che scrive qualcosa da qualche parte e in seguito vedi se è stato eseguito.

Inoltre, non sono sicuro di cosa intendi con "esci da tutte le sessioni nella shell corrente". Ogni bash interattivo è solo una sessione e i comandi digitati vanno sempre solo alla shell più profonda della catena ProxyJump. Se intendevi "i lavori in background nella shell corrente", bash invia SIGHUP a tutti i suoi lavori alla ricezione di SIGHUP dal demone ssh al momento ~., pertanto tale uscita dovrebbe essere completamente amichevole se quei lavori in esecuzione reagiscono correttamente a un SIGHUP.

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.