Encontre a localização de um serviço systemd

39

Existem muitos locais diferentes onde os arquivos da unidade systemd podem ser colocados. Existe uma maneira rápida e fácil de perguntar ao systemd de onde ele leu a declaração de um serviço, considerando apenas o nome do serviço?

    
por Joachim Breitner 18.05.2015 / 16:56

1 resposta

52

Para unidades definidas em arquivos estáticos reais, isso pode ser visto em systemctl status :

$ systemctl status halt-local.service
● halt-local.service - /usr/sbin/halt.local Compatibility
   Loaded: loaded (/lib/systemd/system/halt-local.service; static)
   Active: inactive (dead)

Mas três são unidades que não são definidas por arquivos, por exemplo, com systemd-cron instalado. Estes não têm localização útil listada com status :

$ systemctl status cron-jojo-0.timer
● cron-jojo-0.timer - [Cron] "*/10 * * * * ..."
   Loaded: loaded (/var/spool/cron/crontabs/jojo)
   Active: active (waiting) since Mon 2015-05-18 14:53:01 UTC; 9min ago

Em ambos os casos, no entanto, o campo FragmentPath está educando:

$ systemctl show -p FragmentPath cron-daily.service
FragmentPath=/lib/systemd/system/cron-daily.service
$ systemctl show -p FragmentPath cron-jojo-0.service
FragmentPath=/run/systemd/generator/cron-jojo-0.service
$ systemctl show -p FragmentPath halt-local.service
FragmentPath=/lib/systemd/system/halt-local.service
    
por 18.05.2015 / 17:03