Tentando entender o que um alvo systemd quer

5

Estou tentando entender melhor como as unidades de destino no systemd funcionam e estou confuso sobre o que o graphical.target "quer".

Se eu executar ls -l em /etc/systemd/system/graphical.target.wants , vejo:

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

Se eu executar ls -l em /lib/systemd/system/graphical.target.wants , vejo:

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

O arquivo /lib/systemd/system/graphical.target contém:

[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

Finalmente, se eu executar systemctl show --property "Wants" graphical.target , obtenho:

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

Qual fonte de "quer" em autoridade?

    
por Ender Wiggin 18.08.2016 / 00:15

1 resposta

6

As dependências efetivas de um arquivo de unidade são combinadas de várias fontes. Para graphical.target , eles são:

  • Wants= instruções no próprio arquivo graphical.target (observe que o próprio arquivo da unidade pode ser colocado em vários diretórios em /lib , /run ou /etc , que são sombreados uns aos outros nesta ordem );

  • Wants= declarações nos chamados arquivos drop-in em $PREFIX/systemd/system/graphical.target.d/*.conf (onde PREFIX é como acima e igualmente nomes de arquivos drop-in sombream uns aos outros individualmente);

  • links simbólicos para unidades desejadas em diretórios especiais em $PREFIX/systemd/system/graphical.target.wants (novamente, PREFIXO é como acima).

As dependências de todas essas fontes são simplesmente adicionadas, além de haver várias dependências implícitas (leia systemd.target (5) para detalhes).

Portanto, para ver dependências efetivas, é melhor usar o comando systemctl show-property -p Wants . Infelizmente, não há como ver quais dependências vêm de quais lugares - você terá que verificar isso manualmente se quiser remover um.

    
por 20.08.2016 / 06:25

Tags