判断某个进程是否在 systemd、init.d 或 Upstart 控制之下

判断某个进程是否在 systemd、init.d 或 Upstart 控制之下

是否可以可靠地判断给定的 Linux 进程是否已启动或仍由 init.d 脚本、Upstart 或 systemd 监督?

答案1

使用 systemd,您可以通过查看某个进程所在的 cgroup 来找到它属于哪个 systemd 服务。

例如:

$ ps -eo pid,comm,cgroup | grep dhclient
6476 dhclient 8:devices:/system.slice NetworkManager.service,1:name=systemd:/system.slice/NetworkManager.service

会告诉您该dhclient进程是 的一部分NetworkManager.service,因此由 systemd 管理。

然而:

$ ps -eo pid,comm,cgroup | grep firefox
3302 firefox 8:devices:/user.slice,1:name=systemd:/user.slice/user-1000.slice/session-c2.scope

表明此 Firefox 进程是 UID 为 1000 的用户启动的会话的一部分。

由 initscripts 或 Upstart 作业启动的进程与其他手动启动的后台进程没有区别。

相关内容