![为什么退出后还会有和我的用户id相同的进程?](https://linux22.com/image/1583329/%E4%B8%BA%E4%BB%80%E4%B9%88%E9%80%80%E5%87%BA%E5%90%8E%E8%BF%98%E4%BC%9A%E6%9C%89%E5%92%8C%E6%88%91%E7%9A%84%E7%94%A8%E6%88%B7id%E7%9B%B8%E5%90%8C%E7%9A%84%E8%BF%9B%E7%A8%8B%EF%BC%9F.png)
我使用的是相当标准的 Debian Sid 系统。
注销后,即使停止 DM(LightDM,如果重要的话)我仍然看到以我的名义运行的大量进程。
我知道我可以让流程“分离”并抵抗HANGUP
,但我并没有明确地做任何类似的事情。
我看到的一些流程是:tracker-m
,,,,,。agent
evolution
gvfsd
applet.py
我看不见任何为什么它们在我注销后应该继续运行。
我应该担心系统安全吗?
有人能解释一下吗?
答案1
您列出的特定进程是正常的 - 主要是 GNOME 组件,例如文件索引器或邮件/日历存储守护程序。它们大概应该退出,但是帖子中没有包含足够的信息来回答系统是否应该主动杀死它们。
我知道我可以让进程“分离”并抵抗 HANGUP,但我并没有明确地做任何类似的事情。
“分离”进程的整个想法仅适用于进程首先连接到终端的情况。您的任何图形会话进程都不会以这种方式启动;它们永远不会有控制终端,它们的输入/输出只会进入日志文件(如果有的话)。因为挂断信号是在控制 tty 时生成的消失(例如字面意思是“挂断”),没有控制 tty 意味着不会生成任何 tty。
(尽管即使你确实从终端启动了一个进程,但这并不能阻止它自愿“脱离”该终端(即所谓的“守护进程化”)。在集成服务管理器(如 launchd 或 systemd)出现之前,所有后台服务(如 sshd 或 inetd)都会从终端启动并自行脱离,而无需明确要求。)
对于大多数图形会话进程,一个相近的等价物可能是 X 服务器 (Xorg)。它们可能支持通过 SM 发出明确的“请退出”信号,但通常,它们只是在 Xorg 退出并且与它的连接丢失时才退出。但这不是信号;这是程序自愿发出的,有时程序不会立即发出信号,因为它正忙于做其他事情而没有注意到。
您列出的大部分进程实际上是守护进程/服务,甚至不使用 X11。例如,gvfsd 是 GNOME 虚拟文件系统守护进程,通常仅用过的由图形程序实现,但本身并不依赖于 X11。同样,tracker-miner 是文件索引服务——它根本不使用 X11。(但两者都是 D-Bus 服务,因此当dbus 守护进程退出并且总线连接丢失。)
补充:传统上,Linux 一直没有“完全包含登录会话”的系统范围概念,直到……好吧,直到 systemd-logind 开始使用 cgroups 来封装会话进程。在此之前,注销后出现一两个离群进程是很常见的事。现在,如果您将 logind 配置为在注销时终止所有用户进程,它将杀注销时的所有用户进程。
但是,同一个守护进程在同一个用户的会话之间共享的情况并不少见 - 例如在图形会话和 SSH 登录之间 - 因此后续的 logind 版本将焦点从单个会话转移到用户。(事实上,systemd 甚至通过“systemctl --user”引入了新的“用户服务”概念。)现在,即使您从 GNOME 或 KDE 注销,但仍通过 SSH 登录,您的进程也不会被终止,因为您仍然登录!(这尤其影响前面提到的 D-Bus 服务:总线不再特定于图形会话,而是现在由整个用户帐户共享。)
最后一点意味着,只有通过直接以 root(或其他用户)身份登录的连接执行进程检查,才能获得有用的结果。
答案2
首先:您应该始终关注系统安全。因此,无论您的其他问题是什么,答案都是肯定的。
关于用户注销时是否应终止用户的所有进程,已经存在很多讨论。Systemd 开发人员认为这是一个好主意,但其他人却不这么认为(有点简化,但……)
现在来解释一下。当交互式 shell 终止时,它通常会向其所有子进程发送 SIGHUP(SIGnal HangUP)。除非进程采取了其他处理措施,否则 SIGHUP 会终止子进程。
因此,如果进程有一个处理程序来处理 SIGHUP,它可能会做其他事情。它的父进程通常会变为 1(在我的 Slackware 上是 init)。
另一种选择是,进程分叉出第二个进程来执行实际工作。然后主进程死亡。这就是许多守护进程的工作方式。父进程已经死亡,因此 SIGHUP 永远不会到达分叉出的守护进程。
出于多种原因,进程应该在您注销后继续运行。例如:邮件客户端可能会继续以您的名义轮询邮件服务器,这样,当您再次登录时,您的邮箱就可以更新,而无需等待。文件系统守护程序可能会以您的名义挂载设备。当有进程仍在使用该文件系统时,文件系统守护程序可能会保持其挂载,即使该守护程序可能以您的名义运行。
至于具体过程:我不知道tracker-m
,pplet.py
或agent
。据我所知,可能是任何东西。可能是一些 gnome 的东西。
evolution
可能是您的邮件客户端。尽管在您注销时它实际上没有必要运行,但如果它保持运行,则会减少邮件客户端的启动时间。
gvfsd
是 Gnome 虚拟文件系统守护进程。保持它运行将允许您保留以您的名义安装的 USB 磁盘等。
因此,一般来说,您注销后可能会看到以您的名义运行的进程。这没有问题。但是,作为有安全意识的人,您应该调查正在运行的进程。