Suchen Sie den Speicherort eines systemd-Dienstes

62

Es gibt viele verschiedene Orte, an denen System-Unit-Dateien abgelegt werden können. Gibt es eine schnelle und einfache Möglichkeit, systemd zu fragen, woher es die Erklärung eines Dienstes liest, wenn nur der Dienstname angegeben wird?

Joachim Breitner
quelle

Antworten:

75

Für Einheiten, die in tatsächlichen, statischen Dateien definiert sind, ist dies ersichtlich in 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)

Es gibt aber auch Einheiten, die nicht durch Dateien definiert sind, zB mit systemd-croninstalliertem. Diese haben keinen nützlichen Ort mit 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

In beiden Fällen bildet das FragmentPathFeld jedoch aus:

$ 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
quelle