Ist es möglich, für einen bestimmten Linux-Prozess zuverlässig festzustellen, ob er gestartet wurde oder noch von einem init.d-Skript, Upstart oder systemd überwacht wird?
Antwort1
Mit systemd können Sie herausfinden, zu welchem systemd-Dienst ein Prozess gehört, indem Sie sich die Kontrollgruppe ansehen, in der er sich befindet.
Zum Beispiel:
$ ps -eo pid,comm,cgroup | grep dhclient
6476 dhclient 8:devices:/system.slice NetworkManager.service,1:name=systemd:/system.slice/NetworkManager.service
wird Ihnen mitteilen, dass der dhclient
Prozess Teil von ist NetworkManager.service
und somit von systemd verwaltet wird.
Wohingegen:
$ ps -eo pid,comm,cgroup | grep firefox
3302 firefox 8:devices:/user.slice,1:name=systemd:/user.slice/user-1000.slice/session-c2.scope
zeigt, dass dieser Firefox-Prozess Teil der Sitzung ist, die vom Benutzer mit der UID 1000 gestartet wurde.
Von Initskripten oder Upstart-Jobs gestartete Prozesse sind von anderen manuell gestarteten Hintergrundprozessen nicht zu unterscheiden.