プロセスが 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 ジョブによって起動されたプロセスは、手動で起動された他のバックグラウンド プロセスと区別できません。

関連情報