lightdm --session-child 12 19
下面的输出是什么意思?
为什么要lightdm
fork一个进程来执行上面的命令呢?
--session-child
我在联机帮助页中没有找到lightdm
。谢谢。
$ pstree -a -p -s $$
systemd,1 --system --deserialize 19
└─lightdm,661
└─lightdm,862 --session-child 12 19
└─lxsession,944 -s Lubuntu -e LXDE
└─lxpanel,1087 --profile Lubuntu
└─lxterminal,23017
└─bash,23020
└─pstree,26853 -a -p -s 23020
答案1
从https://lists.freedesktop.org/archives/lightdm/2015-December/000916.html
> ps aux | grep lightdm | grep -v grep
>
> is
>
> root 894 0.0 0.1 35192 3492 ? SLsl 22:19 0:00 lightdm
> root 2766 1.9 1.3 98744 26980 tty7 Ssl+ 22:49 0:45
> /usr/bin/X -core :0 -seat seat0 -auth /var/run/lightdm/root/:0
> -nolisten tcp vt7 -novtswitch
> root 2852 0.0 0.1 19876 3796 ? Sl 22:49 0:00
> lightdm --session-child 12 19
是的,有两个进程是正常的。
第一个 lightdm 进程是守护进程(PID 894)。当你登录时,PAM要求我们启动一个子进程来运行里面的PAM函数。 LightDM 通过设置一些管道与守护进程通信,然后使用 --session-child (PID 2852) 重新运行自身来实现此目的。然后,PAM(作为 root)执行其配置的任何操作来验证用户身份并设置此进程以适合您的会话。完成后,我们会分叉另一个进程,删除权限并实际运行您的会话。我们需要保持会话子进程打开,以便当会话结束时,我们可以使用 PAM 运行清理过程。
我猜最后一句中的“会话子进程”是指第二个lightdm进程,而不是一个lxsession
进程。但我真的不知道源代码。