web-dev-qa-db-fra.com

Rechercher l'emplacement d'un service de fichiers d'unité systemd

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

75
Joachim Breitner

Pour les unités définies dans des fichiers statiques réels, cela peut être vu 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 existe des unités qui ne sont pas définies par des fichiers, par exemple avec systemd-cron installée. Ceux-ci n'ont aucun 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 champ FragmentPath é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
89
Joachim Breitner