É seguro fechar o shell apenas clicando em "X" ou usando "ctrl + d"?

11

É seguro fechar o shell apenas clicando em "X" ou usando "ctrl + d" enquanto estiver conectado como root com su ou é mais seguro fechá-lo digitando "exit"? Existe alguma diferença (em termos de segurança) ou é a mesma e não importa como você usa?

pootzko
fonte

Respostas:

13

Ctrl-D ou exité o mesmo.

Se você estiver usando o "X", o gerenciador de janelas envia um sinal de término para o shell. Que no final tem o mesmo resultado. Se o shell não reagir, o usuário geralmente recebe um aviso e pode forçá-lo a terminar (igual a kill -9 $PID).

Há uma pequena diferença entre o "X" - e o método exit se você estiver usando zshcomo shell: se você tiver um processo em segundo plano em execução, exit/ ctrl-D produzirá pela primeira vez apenas uma mensagem de aviso "você tem trabalhos em execução", o segunda vez que o shell é fechado. Com o botão "X", o shell termina imediatamente sem nenhum aviso.

jofel
fonte
5
Também há uma diferença no bash. Se você pressionar Ctrl + d, todos os processos em segundo plano &permanecerão em execução. Se você "X", eles serão encerrados.
223 Patrick Patrick
3
@ Patrick isso parece depender do emulador de terminal e não do shell. A menos que o emulador mate explicitamente processos em segundo plano, tanto quanto sei, o bash não os enviará SIGHUP, não importa como você saia. Eu apenas tentei isso no Mac OS X 10.7.3. O terminal não mata os processos em segundo plano, mas o Xterm (executando no X11) mata. Não sei se esse é um comportamento do Xterm especificamente ou do X11 em geral.
31512 Chris Page
@ jofel isso não é verdade, veja minha resposta.
Patrick
@ Patrick, obrigado por apontar isso. Vou editar ou excluir minha resposta.
Jofel
@jofel nah, não exclua, as informações do zsh ainda são úteis. Eu sou apenas um noob no zsh, então não posso comentar lá. Mas isso traz um bom ponto, então editei minha resposta para observar que diferentes shells podem se comportar de maneira diferente, e o comportamento padrão que descrevi depende do bash, enquanto o OP não especifica seu shell.
26412 Patrick
4

Fechar o emulador de terminal não é o mesmo que pressionar CTRL + D(a menos que a opção huponexitesteja configurada).

  • Quando você fecha o terminal (clicando em "X"), o emulador de terminal envia um SIGHUP para o shell. Quando o bash recebe um SIGHUP, ele também envia um SIGHUP para todos os seus trabalhos.

  • Quando você sai do terminal com CTRL+Dou logoutou exit, o shell sai sem enviar um SIGHUP para todos os trabalhos. Este é o comportamento padrão, mas pode ser alterado, definindo a festa shoptcenário huponexit.

Portanto, se seu objetivo é garantir que não haja nada em segundo plano, é mais seguro clicar em "X".

.

As informações fornecidas por jofel em seu comentário estão incorretas (desculpe jofel). O emulador de terminal não tem idéia de quais trabalhos estão sendo executados sob o shell, portanto, não é possível finalizá-los.

NOTA :
Esse comportamento é completamente dependente do shell. É perfeitamente possível que diferentes shells tenham comportamentos padrão diferentes.

Patrick
fonte
Quando Ctrl+dprocesso é herdado por PPIDs 1 = systemd
edid
1

Não há diferença. Tanto que, quando você pressiona ^ D, está fazendo o mesmo que digitar 'exit':

$ su -
Password:
# [press ^D]
logout
Renan
fonte
Sim, CTRL+De exitsão os mesmos, a pergunta foi sobre clicando em "X" do gerenciador de janelas para fechar a janela, não digitando exit:-)
Patrick