¿Es seguro cerrar el shell simplemente haciendo clic en "X" o usando "ctrl + d"?

11

¿Es seguro cerrar el shell simplemente haciendo clic en "X" o usando "ctrl + d" mientras está conectado como root con su o es más seguro cerrarlo escribiendo "exit"? ¿Hay alguna diferencia (en términos de seguridad) o es la misma y no importa de qué manera la use?

pootzko
fuente

Respuestas:

13

Ctrl-D o exites lo mismo.

Si usa la "X", el administrador de ventanas envía una señal de terminación al shell. Que tiene al final el mismo resultado. Si el shell no reacciona, el usuario generalmente recibe una advertencia y luego puede forzar el final del shell (igual a kill -9 $PID).

Hay una pequeña diferencia entre la "X" y el método de salida si lo está utilizando zshcomo shell: si tiene un proceso en segundo plano en ejecución, exit/ ctrl-D produce la primera vez solo un mensaje de advertencia "tiene trabajos en ejecución", el segunda vez que se cierra el caparazón. Con el botón "X", el shell termina inmediatamente sin ninguna advertencia.

jofel
fuente
55
También hay una diferencia en bash también. Si ctrl + d, los procesos en segundo plano &seguirán ejecutándose. Si usted "X", entonces serán terminados.
Patrick
3
@Patrick esto parece depender del emulador de terminal en lugar del shell. A menos que el emulador elimine explícitamente los procesos en segundo plano, hasta donde yo sé, bash no los enviará SIGHUP sin importar cómo salga. Acabo de probar esto en Mac OS X 10.7.3. La terminal no mata los procesos en segundo plano, pero Xterm (que se ejecuta en X11) sí. No sé si ese es un comportamiento de Xterm específicamente o X11 en general.
Chris Page
@jofel esto no es cierto, mira mi respuesta.
Patrick
@Patrick gracias por señalar esto. Editaré o eliminaré mi respuesta.
jofel
@jofel nah, no elimines, la información de zsh sigue siendo útil. Solo soy un novato en zsh, así que no puedo comentar allí. Pero eso trae un buen punto, así que edité mi respuesta para notar que diferentes shells pueden comportarse de manera diferente, y el comportamiento predeterminado que describí depende de bash, mientras que el OP no especifica su shell.
Patrick
4

Cerrar el emulador de terminal no es lo mismo que presionar CTRL + D(a menos que la opción huponexitesté configurada).

  • Cuando cierra el terminal (haciendo clic en "X"), el emulador de terminal envía un SIGHUP al shell. Cuando bash recibe un SIGHUP, también envía un SIGHUP a todos sus trabajos.

  • Cuando sale del terminal con CTRL+Do logouto exit, el shell sale sin enviar un SIGHUP a todos los trabajos. Este es el comportamiento predeterminado, pero se puede cambiar configurando la shoptconfiguración bash huponexit.

Así que, en última instancia, si su objetivo es asegurarse de que no se ejecute nada en segundo plano, es más seguro hacer clic en "X".

.

La información proporcionada por jofel en su comentario es incorrecta (lo siento, jofel). El emulador de terminal no tiene idea de qué trabajos se ejecutan bajo el shell, por lo tanto, no puede terminarlos.

NOTA :
este comportamiento depende completamente del shell. Es completamente posible que diferentes shells tengan comportamientos predeterminados diferentes.

Patricio
fuente
Cuando el Ctrl+dproceso es heredado por PPID 1 = systemd
EdiD
1

No hay diferencia. Tanto que, cuando presionas ^ D, estás haciendo lo mismo que escribir 'salir':

$ su -
Password:
# [press ^D]
logout
Renan
fuente
Sí, CTRL+Dy exitson lo mismo, la pregunta era hacer clic en la "X" del administrador de ventanas para cerrar la ventana, no escribir exit:-)
Patrick