¿Es posible saber de manera confiable para un proceso de Linux determinado si se inició o aún está supervisado por un script init.d, Upstart o systemd?
Respuesta1
Con systemd, puedes encontrar a qué servicio systemd pertenece un proceso mirando el cgroup en el que se encuentra.
Por ejemplo:
$ ps -eo pid,comm,cgroup | grep dhclient
6476 dhclient 8:devices:/system.slice NetworkManager.service,1:name=systemd:/system.slice/NetworkManager.service
le dirá que el dhclient
proceso es parte de NetworkManager.service
, y por lo tanto es administrado por systemd.
Mientras que:
$ ps -eo pid,comm,cgroup | grep firefox
3302 firefox 8:devices:/user.slice,1:name=systemd:/user.slice/user-1000.slice/session-c2.scope
muestra que este proceso de Firefox es parte de la sesión iniciada por el usuario con el UID 1000.
Los procesos iniciados mediante scripts de inicio o trabajos Upstart no se pueden distinguir de otros procesos en segundo plano iniciados manualmente.