Trouver l'emplacement d'un service systemd

62

Il existe de nombreux endroits différents où les fichiers d’unité systemd peuvent être placés. Existe-t-il un moyen simple et rapide de demander à systemd où il lit la déclaration d'un service, à partir du nom du service?

Joachim Breitner
la source

Réponses:

75

Pour les unités définies dans des fichiers réels et statiques, vous pouvez le voir dans 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)

Mais il y a des unités qui ne sont pas définies par des fichiers, par exemple avec systemd-croninstallé. Ceux-ci n'ont pas d'emplacement utile répertorié avec 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

Dans les deux cas, cependant, le FragmentPathdomaine éduque:

$ 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
Joachim Breitner
la source