Próbuje zrozumieć, czego chce systemowy cel

6

Próbuję lepiej zrozumieć, w jaki sposób działają jednostki docelowe w systemd i jestem zdezorientowany co do tego, czego „graphical.target” chce.

Jeśli biegnę ls -lw /etc/systemd/system/graphical.target.wantswidzę:

total 0
lrwxrwxrwx 1 root root 43 Jul 19 16:50 accounts-daemon.service -> /lib/systemd/system/accounts-daemon.service

Jeśli biegnę ls -lw /lib/systemd/system/graphical.target.wantswidzę:

total 0
lrwxrwxrwx 1 root root 39 Jul 12 11:28 systemd-update-utmp-runlevel.service -> ../systemd-update-utmp-runlevel.service

Plik /lib/systemd/system/graphical.targetzawiera:

[Unit]
Description=Graphical Interface
Documentation=man:systemd.special(7)
Requires=multi-user.target
Wants=display-manager.service
Conflicts=rescue.service rescue.target
After=multi-user.target rescue.service rescue.target display-manager.service
AllowIsolate=yes

Wreszcie, jeśli uruchomię systemctl show --property "Wants" graphical.target, dostanę:

Wants=hddtemp.service ureadahead.service speech-dispatcher.service systemd-update-utmp-runlevel.service grub-common.service ntp.service lxdm.service accounts-daemon.service ondemand.service

Które źródło „chce” w sposób wiarygodny?

Ender Wiggin
źródło

Odpowiedzi:

8

Efektywne zależności pliku jednostkowego są łączone z wielu źródeł. Dla graphical.target, są to:

  • Wants=instrukcje w graphical.targetotwartym pliku (należy zauważyć, że sam plik urządzenie może być umieszczone w różnych katalogów pod /lib, /runlub /etc, co cień siebie w tej kolejności);

  • Wants=instrukcje w tak zwanych plikach drop-in w $PREFIX/systemd/system/graphical.target.d/*.conf(gdzie PREFIX jest taki jak powyżej i pliki drop-in o tej samej nazwie cieniują się indywidualnie);

  • dowiązania symboliczne do poszukiwanych jednostek w specjalnych katalogach w $PREFIX/systemd/system/graphical.target.wants(ponownie, PREFIX jest jak wyżej).

Zależności ze wszystkich tych źródeł są po prostu sumowane, a ponadto istnieje wiele niejawnych zależności ( szczegółowe informacje można znaleźć w systemied.target (5) ).

Tak więc, aby zobaczyć efektywne zależności, najlepiej użyć systemctl show-property -p Wantspolecenia. Niestety nie ma sposobu, aby zobaczyć, które zależności pochodzą z jakich miejsc - musisz to sprawdzić ręcznie, jeśli chcesz je usunąć.

intelfx
źródło
1
Dzięki za to. Nie wiem, czy polecenie uległo zmianie lub czy polecenie różni się w mojej dystrybucji (CentOS 7), ale aby sprawdzić zależności dla celu graficznego, musiałem użyć tego polecenia:systemctl show -p Wants graphical.target
newmangt
1
@newmangt Od show-propertytego czasu nazwa podkomendy została zmieniona na showpoprawna.
intelfx