我可以关闭 Ubuntu 系统而不关闭所有正在运行的程序。我认为这不应该发生

我可以关闭 Ubuntu 系统而不关闭所有正在运行的程序。我认为这不应该发生
  1. 当我关闭 Ubuntu 系统时,它不会限制我,而是允许我在不关闭所有程序的情况下关闭系统。
  2. 为什么它不限制我关闭所有程序?

答案1

Ubuntu 将发送信号终端信号允许正在运行的应用程序正常终止并关闭其打开的进程。只有当应用程序不监听 SIGTERM 时,它才可能被终止。

如果正在运行的应用程序需要用户交互(使用打开的未保存如果您正在从 LibreOffice 下载文档,则关机将暂停,直到用户进行交互。

在多用户系统中,只要其他用户登录,用户发起的关机就会停止。我们需要 root 权限才能关机。然后,SIGTERM 信号将发送到所有正在运行的会话中所有打开的应用程序。

如果假设在超时之后(90年代) 用户或应用程序没有对应该发出的 SIGTERM 信号 SIGKILL 做出反应,这才会导致未保存的数据丢失。upstart 发出的 SIGTERM 的默认 KILL 超时时间要短得多(5 秒)。

然而,对当前版本的测试表明,我们总是可以关机,而不会被提示保存其他登录用户未完成的工作。由于这确实可能导致数据丢失,我认为这是一个错误:

答案2

根据我使用 Ubuntu 和其他 Linux 发行版的经验。当您关闭计算机时,内核会自动向所有打开的程序发送关闭通知。然后,它会在终止所有进程(包括网络)后关闭。Windows 有一个功能,其工作方式略有不同,如果打开的进程需要保存文件,则关闭过程会暂停一段时间,直到观察到用户交互。

答案3

shutdown 通过向 init 进程发出信号,要求其更改运行级别来完成其工作。运行级别 0 用于停止系统。

因此当运行级别更改为 0 即 init 0 时,init 将被终止。实际上,init 是系统中运行的所有进程的父进程。如果父进程终止,则所有子进程都将成为僵尸进程,即它们不是真正的进程并且不值得考虑。

即全部关闭。

阅读其手册页,你所要做的就是对关机过程进行一些研究。

相关内容