判斷進程是否受 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 作業啟動的程序與其他手動啟動的後台程序沒有區別。

相關內容