哪些进程可以从 Linux 注销,哪些不能?

Tim*_*Tim 7 linux process ubuntu signals logout

我试图了解当我们注销 Linux(特别是 Ubuntu)时会发生什么:

  • 进程最初如何请求/通知注销进程执行注销(通过发送一些信号,或一些其他 IPC 方式)?注销过程运行的程序是什么?请求/通知进程通常运行什么程序?

  • 注销进程会杀死哪些进程,哪些不会?(有一些方法可以使登录后启动的进程在注销后存活下来,他们如何设法做到这一点?使一个没有控制终端的进程似乎是一种方法,但大多数进程在下面的注销中被杀死示例没有控制终端)

  • 注销进程如何杀死这些进程(通过发送一些信号或其他一些 IPC 方式)?

考虑三种情况:虚拟控制台和桌面环境以及 SSH。(前两个由操作系统提供,第三个不是,尽管都在用户空间中运行)

  1. 当我登录虚拟控制台时,我从登录 shell 获得以下祖先进程:

    1 systemd
    721 login
    26284 bash
    
    Run Code Online (Sandbox Code Playgroud)

    注销后,进程721 login及以下消失。

  2. 在 Lubuntu 18.04 上,当我登录 lightdm 和 LXDE 并从桌面面板运行 lxterminal 并从 lxterminal 窗口中的以下命令获取祖先进程时:

    $ ps -paus $$
    systemd,1 --system --deserialize 19
      `-lightdm,661
          `-lightdm,27302 --session-child 13 24
              `-lxsession,27309,testme -s Lubuntu -e LXDE
                  `-lxpanel,27399 --profile Lubuntu
                      `-lxterminal,27565
                          `-bash,27568
                              `-pstree,27594 -paus 27568
    
    Run Code Online (Sandbox Code Playgroud)

    当我注销时,进程lightdm,27302及以下消失。

  3. 在我通过 ssh 进入 Lubuntu 18.04 之后:

    $ pstree -a -p   -s $$
    systemd,1 --system --deserialize 19
      ??sshd,669 -D
          ??sshd,22838 
              ??sshd,22979  
                  ??bash,22980
                      ??pstree,30610 -a -p -s 22980
    
    Run Code Online (Sandbox Code Playgroud)

    注销后,从下sshd,22838到下的所有进程都消失了。

谢谢。

炸鱼薯*_*德里克 -4

请记住,我不会告诉您所有细节,因为即使我这样做,您也无法理解。我也知道您并不熟悉每个概念,但阅读联机帮助页对您有好处。

进程最初如何请求/通知注销进程执行注销(通过发送一些信号,或其他一些IPC方式)?注销过程运行的程序是什么?请求/通知进程通常运行的程序是什么?

假设您通过“注销进程”来表示“会话管理器”。通过 IPC 与logind. /usr/lib/systemd/systemd-logind。任何可以 IPC 的程序logind

注销进程会杀死哪些进程,不会杀死哪些进程?(有一些方法可以让进程在登录后启动并在注销后生存,它们是如何做到这一点的?使进程没有控制终端似乎是一种方法,但大多数进程在下面的注销中被杀死示例没有控制终端)

该会话内的进程将被终止,如果这是用户的最后一个会话,并且该用户未启用延迟,则整个用户切片将被销毁。通过不杀死它。几乎与控制终端无关,因为logind不使用该内核功能。

注销进程如何杀死这些进程(通过发送一些信号,或其他一些IPC方式)?

复杂的逻辑,包括单元文件和信号中的预定义操作。

1,2,3 查看进程树不起作用。logind不在乎这个。基本上,systemd 风格的服务和会话管理是 cgroup。看systemctl status

  • 你应该回答问题,而不是人。我们都可以从您对 systemd 的设计和内部工作原理的深入了解和理解中受益匪浅;-) - 前提是您提供一些背景信息(并非每个系统都运行 systemd),并以不太像公案的方式表达您的见解( “通过 IPC 登录。任何可以 IPC 登录的程序。”) (3认同)
  • @Tim:这是给帖子投票的一个糟糕的理由。 (3认同)
  • @Tim:不是为了破坏评论的有用性,而是你可以用鼠标将鼠标悬停在帖子上,它会使文本消失。 (2认同)