Antecedentes
Se você olhar para a página de manual man systemd.unit
, tem uma tabela que explica as diferenças. Isto é de um sistema CentOS 7.x.
UNIT LOAD PATH
Unit files are loaded from a set of paths determined during
compilation, described in the two tables below. Unit files found
in directories listed earlier override files with the same name
in directories lower in the list.
Table 1. Load path when running in system mode (--system).
┌────────────────────────┬─────────────────────────────┐
│Path │ Description │
├────────────────────────┼─────────────────────────────┤
│/etc/systemd/system │ Local configuration │
├────────────────────────┼─────────────────────────────┤
│/run/systemd/system │ Runtime units │
├────────────────────────┼─────────────────────────────┤
│/usr/lib/systemd/system │ Units of installed packages │
└────────────────────────┴─────────────────────────────┘
Quando dizem "pacotes instalados", estão se referindo a qualquer coisa que tenha sido instalada por meio de um RPM. O mesmo pode ser assumido para o Debian / Ubuntu também, onde um arquivo DEB seria o "pacote instalado".
NOTA: a tabela acima de um sistema Debian / Ubuntu é um pouco diferente.
Table 1. Load path when running in system mode (--system).
┌────────────────────┬─────────────────────────────┐
│Path │ Description │
├────────────────────┼─────────────────────────────┤
│/etc/systemd/system │ Local configuration │
├────────────────────┼─────────────────────────────┤
│/run/systemd/system │ Runtime units │
├────────────────────┼─────────────────────────────┤
│/lib/systemd/system │ Units of installed packages │
└────────────────────┴─────────────────────────────┘
Analisando /usr/lib/systemd/system
Você pode dizer quais pacotes possuem quais arquivos da unidade em /usr/lib/systemd/system
gostam disso em um sistema CentOS / Fedora / RHEL:
$ rpm -qf /usr/lib/systemd/system/* |sort -u | head
abrt-2.1.11-50.el7.centos.x86_64
abrt-addon-ccpp-2.1.11-50.el7.centos.x86_64
abrt-addon-kerneloops-2.1.11-50.el7.centos.x86_64
abrt-addon-pstoreoops-2.1.11-50.el7.centos.x86_64
abrt-addon-vmcore-2.1.11-50.el7.centos.x86_64
abrt-addon-xorg-2.1.11-50.el7.centos.x86_64
accountsservice-0.6.45-7.el7.x86_64
acpid-2.0.19-8.el7.x86_64
alsa-utils-1.1.3-2.el7.x86_64
anaconda-core-21.48.22.134-1.el7.centos.x86_64
Analisando /etc/systemd/system
Se fizermos o mesmo em relação a /etc/systemd/system
, esperamos não encontrar arquivos pertencentes a um RPM (o que é, de fato, o caso do meu sistema CentOS 7.x.
):
$ rpm -qf /etc/systemd/system/* /etc/systemd/system/*/* | grep -v 'not owned'
$
Outliers
Lembre-se de que você pode encontrar arquivos perdidos ocasionais em /usr/lib/systemd/system
, como no Virtualbox (vboxadd *):
$ rpm -qf /usr/lib/systemd/system/* |sort -u | grep 'not owned'
file /usr/lib/systemd/system/initrd.target.wants is not owned by any package
file /usr/lib/systemd/system/shutdown.target.wants is not owned by any package
file /usr/lib/systemd/system/vboxadd.service is not owned by any package
file /usr/lib/systemd/system/vboxadd-service.service is not owned by any package
file /usr/lib/systemd/system/vboxadd-x11.service is not owned by any package
Existem outros.
Conclusões
A expectativa é que /usr/lib/systemd/system
seja um diretório que deve conter apenas arquivos unitários do systemd que foram colocados lá pelo gerenciador de pacotes (YUM / DNF / RPM / APT / etc).
Os arquivos em /etc/systemd/system
são colocados manualmente aqui pelo operador do sistema para instalações de software ad-hoc que não estão na forma de um pacote. Isso incluiria instalações de software do tipo tarball ou scripts desenvolvidos internamente.