只需单击“X”或使用“ctrl+d”关闭 shell 是否安全?

只需单击“X”或使用“ctrl+d”关闭 shell 是否安全?

在使用 su 以 root 身份登录时,仅通过单击“X”或使用“ctrl+d”来关闭 shell 是否安全,或者通过键入“exit”来关闭 shell 是否更安全?是否有任何区别(安全方面)或者是相同的并且使用哪种方式并不重要?

答案1

Ctrl-D 或exit是相同的。

如果使用“X”,窗口管理器将向 shell 发送终止信号。最终得到相同的结果。如果 shell 没有反应,用户通常会收到警告,然后可以强制 shell 结束(等于kill -9 $PID)。

如果您使用 shell,“X”- 和 exit-方法之间有一个小区别zsh:如果您有一个后台进程正在运行,exit/ctrl-D 第一次只会生成一条警告消息“您正在运行作业”,第二次关闭外壳。使用“X”按钮,shell 会立即终止,不会发出任何警告。

答案2

关闭终端仿真器与按不同CTRL + D(除非huponexit设置了该选项)。

  • 当您关闭终端(单击“X”)时,终端仿真器会向 shell 发送 SIGHUP。当 bash 收到 SIGHUP 时,它也会向您的所有作业发送 SIGHUP。

  • CTRL+D当您使用或logout或退出终端时exit,shell 将退出而不向所有作业发送 SIGHUP。这是默认行为,但可以通过设置 bashshopt设置 来更改huponexit

因此,最终,如果您的目标是确保后台没有任何运行,那么单击“X”会更安全。

jofel 在评论中提供的信息不正确(抱歉 jofel)。终端模拟器不知道 shell 下正在运行哪些作业,因此无法终止它们。

笔记
此行为完全依赖于 shell。不同的 shell 完全有可能具有不同的默认行为。

答案3

没有区别。如此之多,当您按 ^D 时,您所做的事情与输入“exit”相同:

$ su -
Password:
# [press ^D]
logout

相关内容