Ubuntu 将发送SIGTERM信号以允许正在运行的应用程序正常终止并关闭其打开的进程。仅当应用程序不监听 SIGTERM 时,它才可能被终止。
如果正在运行的应用程序需要用户交互(使用 LibreOffice 打开的未保存文档进行测试),关闭将停止,直到用户交互。
在多用户系统上,只要其他用户登录,用户启动的关闭就会停止。我们需要 root 权限才能仍然能够关闭。然后 SIGTERM 信号将被发送到所有正在运行的会话中的所有打开的应用程序。
如果假设超时(90 秒)后用户或应用程序没有对 SIGTERM 信号做出反应,则应发出 SIGKILL,这只会导致未保存的数据丢失。upstart 发出的 SIGTERM 的默认 KILL 超时要短得多(5 秒)。
然而,对当前版本的测试表明,我们始终可以关闭,而不会提示保存其他登录用户未完成的工作。由于这确实可能导致数据丢失,我认为这是一个错误:
小智 1
根据我使用 Ubuntu 和其他 Linux 发行版的经验。当您关闭计算机时,内核会自动向所有打开的程序发送关闭通知。然后它在杀死包括网络在内的所有进程后关闭。Windows 有一个功能,其工作方式略有不同,如果打开的进程需要保存文件,则关闭进程会暂停一段时间,直到观察到用户交互。