Salga del shell con acceso directo (sin escribir exit) que cierra la sesión correctamente

12

Utilizo un comando ProxyJump para varias sesiones ssh que uso a diario, y también cambio mucho de usuarios en estas sesiones y tener que escribir exit3 o 4 veces seguidas no es demasiado divertido.

Estoy al tanto de newline+ ~+ .para terminar una sesión ssh, aún tengo que verificar si termina amigablemente como lo exitharía, pero ¿cómo sales de todas las sesiones en el shell actual con un solo comando o acceso directo de tal manera que escribir exit3 o 4 veces? en mi caso se convierte en algo de una sola vez?

tsujp
fuente
2
~.simplemente desconecta su cliente SSH (es útil cuando la red ha desaparecido, por ejemplo). Normalmente, el demonio SSH lo reconocerá y señalará su sesión SIGHUP, por lo que no es lo mismo que salir del shell normalmente (pero es útil si no puede obtener ninguna respuesta del shell).
Toby Speight

Respuestas:

29

Ctrl- DSaldrá de un shell en muchos casos. Es más rápido que escribir exit Enter. Todavía no es un solo comando para terminar todo, pero sostener Ctrly golpear Dvarias veces es más fácil y rápido. No estoy seguro de lo valioso que es esto para su caso de uso.

Discutido en detalle aquí .

0x perro pastor
fuente
2
La siguiente parada es unix.stackexchange.com/a/182071/5132 , y la siguiente parada es la lectura adicional allí. (-:
JdeBP
2
Tenga cuidado con CTRL + D. En bash, si ha ingresado caracteres en su solicitud, al presionar CTRL + D se ejecutará de la misma manera que lo haría Enter. En otras palabras, no escriba un rmcomando y luego presione CTRL + D si no desea ejecutarlo. No veo este comportamiento en ksh.
Peschke
2
@Peschke En todos los sistemas que he usado Ctrl + D no hace nada si escribí algo. Nunca he visto el comportamiento que describe.
John Kugelman
1
@JohnKugelman Probé y confirmó el comportamiento en el momento de mi comentario con bash en RHEL 7.5.
Peschke
3
Peschke está utilizando los vienlaces de entrada de terminal.
JdeBP
5

Escribir ~.realmente hace el truco de cerrar todas las conexiones "anidadas" hasta lo más profundo.

Lo hace con la salida amigable que desea, siempre y cuando todos sus proyectiles estén configurados para manejar SIGHUP como una muerte elegante. Bash lo hace por defecto. Puede comprobar fácilmente la salida amistosa para su puesta a punto por ejemplo, ver si los .bash_historyarchivos de sus sesiones más profundas quedan debidamente actualizados después de que el ~., o si se establece su golpe-es no actualizar .bash_history a la salida, entonces podrían establecer una trapen el SALIR del evento (o en su ~/.bash_logout) con un comando que escribe algo en alguna parte y luego ver si se ejecutó.

Además, no estoy seguro de lo que quieres decir con "salir de todas las sesiones en el shell actual". Cada bash interactivo es solo una sesión, y los comandos que escribe van siempre solo al caparazón más profundo de la cadena ProxyJump. Si se refería a "los trabajos en segundo plano en el shell actual", bash envía SIGHUP a todos sus trabajos al recibir SIGHUP por el demonio ssh en el ~., por lo tanto, dicha salida debería ser completamente amigable si los trabajos en ejecución reaccionan correctamente a un SIGHUP.

LL3
fuente