Определите, находится ли процесс под контролем systemd, init.d или Upstart.

Определите, находится ли процесс под контролем systemd, init.d или Upstart.

Можно ли достоверно определить для определенного процесса Linux, был ли он запущен или все еще контролируется скриптом init.d, Upstart или systemd?

решение1

С помощью systemd вы можете определить, к какой службе 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, неотличимы от других фоновых процессов, запускаемых вручную.

Связанный контент