É possível saber com segurança se um determinado processo do Linux foi iniciado ou ainda é supervisionado por um script init.d, Upstart ou systemd?
Responder1
Com o systemd, você pode descobrir a qual serviço do systemd um processo pertence, observando o cgroup em que ele está.
Por exemplo:
$ ps -eo pid,comm,cgroup | grep dhclient
6476 dhclient 8:devices:/system.slice NetworkManager.service,1:name=systemd:/system.slice/NetworkManager.service
dirá que o dhclient
processo faz parte do NetworkManager.service
e, portanto, é gerenciado pelo systemd.
Enquanto:
$ ps -eo pid,comm,cgroup | grep firefox
3302 firefox 8:devices:/user.slice,1:name=systemd:/user.slice/user-1000.slice/session-c2.scope
mostra que este processo do Firefox faz parte da sessão iniciada pelo usuário com o UID 1000.
Os processos iniciados por initscripts ou trabalhos Upstart são indistinguíveis de outros processos em segundo plano iniciados manualmente.