ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

退出Linux后哪些进程可以继续存在,哪些不可以?

2019-08-14 05:52:06  阅读:10  来源: 互联网

标签:linux ubuntu process logout signals



我想了解当我们退出Linux时会发生什么(特别是Ubuntu):

>进程最初如何请求/通知注销进程执行注销(通过发送一些信号或其他一些IPC方法)?注销过程运行的程序是什么?请求/通知流程通常运行的程序是什么?
>登出过程会杀死什么进程,什么不进行? (有一些方法可以在登录后立即启动进程,并且他们如何设法做到这一点?使一个没有控制终端的进程似乎是一种方式,但大多数进程都是通过以下方式注销而被杀死的示例没有控制终端)
>注销过程如何杀死这些进程(通过发送一些信号或其他一些IPC手段)?

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

>当我登录虚拟控制台时,我得到以下内容
来自登录shell的祖先进程:

1 systemd
721 login
26284 bash

注销后,进程721登录及以下消失.
>在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

当我退出时,进程lightdm,27302及以下
消失.
>在我进入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

我退出后,所有进程从sshd,22838开始到
下面消失了.

谢谢.

解决方法:

我不知道如何在OS注销过程中涉及systemd(特别是/usr/lib / systemd / systemd-logind).

以下是我的部分答案:

> The login process wait() on the login shell process,当登录shell退出时,登录将接收SIGCHLD并唤醒以恢复其执行,这也将退出.
>似乎a logout request program如lxsession-logout sends SIGTERM to the lxsession process(我说“似乎”因为我不太了解源代码).我不知道lxsession如何回应SIGTERM以及为什么它的后代也会死,如I can’t find its disposition.我不知道为什么父母lightdm,lxsession的27302也死了,并猜测the parent lightdm,27302 may wait() on lxsession and die once wake up.
>我不知道当我退出SSH时会发生什么.我猜它类似于CLI登录(案例1),sshd,22979可能会等待bash,22980并且死亡.但我真的不知道为什么有这么多的sshd进程.



标签:linux,ubuntu,process,logout,signals

专注分享技术,共同学习,共同进步。

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有