J'essaie de mieux comprendre comment les unités cibles de systemd fonctionnent et je suis confus quant à ce que graphic.target "veut".
Si je lance ls -l
dans /etc/systemd/system/graphical.target.wants
je vois:
total 0 lrwxrwxrwx 1 root root 43 Jul 19 16:50 accounts-daemon.service -> /lib/systemd/system/accounts-daemon.service
Si je lance ls -l
dans /lib/systemd/system/graphical.target.wants
je vois:
total 0 lrwxrwxrwx 1 root root 39 Jul 12 11:28 systemd-update-utmp-runlevel.service -> ../systemd-update-utmp-runlevel.service
Le file /lib/systemd/system/graphical.target
contient:
[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
Enfin, si systemctl show --property "Wants" graphical.target
j'obtiens:
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
Quelle source de "veut" en autorité?
Les dependencies effectives d'un file unitaire sont combinées à partir d'un certain nombre de sources. Pour graphical.target
, ils sont:
Wants=
déclarations dans le file graphical.target
lui-même (notez que le file unité lui-même peut être placé dans divers directorys sous /lib
, /run
ou /etc
, qui s'observent dans cet ordre);
Wants=
déclarations dans les files dits "drop-in" dans $PREFIX/systemd/system/graphical.target.d/*.conf
(où PREFIX est comme ci-dessus et les files drop-in également nommés);
des liens symboliques vers les unités voulues dans des directorys spéciaux dans $PREFIX/systemd/system/graphical.target.wants
(encore une fois, PREFIX est comme ci-dessus).
Les dependencies de toutes ces sources sont simplement additionnées, plus il y a un certain nombre de dependencies implicites (lisez systemd.target (5) pour plus de détails).
Ainsi, pour voir les dependencies efficaces, il est préférable d'utiliser la command systemctl show-property -p Wants
. Malheureusement, il n'y a aucun moyen de voir quelles dependencies proviennent de quels endroits – vous devrez vérifier cela manuellement si vous voulez en supprimer un.