Antes de todos os arquivos da unidade estarem, /etc/systemd/system/
mas agora alguns estão aparecendo em /usr/lib/systemd/system
(<- no CentOS ou /lib/systemd/system
<- no Debian / Ubuntu), qual é a diferença entre essas pastas?
Esta pergunta já foi respondida man 7 file-hierarchy
e vem com o systemd (também existe a versão online ):
/etc
System-specific configuration.
(…)
VENDOR-SUPPLIED OPERATING SYSTEM RESOURCES
/usr
Vendor-supplied operating system resources.
Usually read-only, but this is not required. Possibly
shared between multiple hosts. This directory should not
be modified by the administrator, except when installing
or removing vendor-supplied packages.
Basicamente, os arquivos enviados em pacotes baixados do repositório de distribuição são acessados /usr/lib/systemd/
. As modificações feitas pelo administrador do sistema (usuário) entram em /etc/systemd/system/
.
As unidades específicas do sistema substituem as unidades fornecidas pelos fornecedores. Usando os drop-ins, você pode substituir apenas partes específicas dos arquivos da unidade, deixando o restante para o fornecedor (os drop-ins estão disponíveis desde o início do systemd, mas foram adequadamente documentados apenas na v219; consulte man systemd.unit
).
Se você olhar para a página de manual, man systemd.unit
ela possui 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 eles dizem "pacotes instalados", estão se referindo a qualquer coisa que foi instalada via RPM. O mesmo pode ser assumido para o Debian / Ubuntu, 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 │ └────────────────────┴─────────────────────────────┘
/usr/lib/systemd/system
Você pode dizer quais pacotes possuem quais arquivos de unidade /usr/lib/systemd/system
como este 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
/etc/systemd/system
Se fizermos o mesmo /etc/systemd/system
, esperamos encontrar nenhum arquivo pertencente a um RPM (que é realmente o caso no meu sistema CentOS 7.x.):
$ rpm -qf /etc/systemd/system/* /etc/systemd/system/*/* | grep -v 'not owned'
$
Lembre-se de que você pode encontrar ocasionalmente arquivos perdidos /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
Há outros.
A expectativa é que /usr/lib/systemd/system
seja um diretório que deve conter apenas arquivos de unidades do systemd que foram colocados lá pelo gerenciador de pacotes (YUM / DNF / RPM / APT / etc).
Os arquivos /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 inclui instalações de software do tipo tarball ou scripts criados em casa.
/lib/systemd/system
vs./usr/lib/systemd/system
. Estou feliz por ter encontrado esta resposta./etc/systemd/system
gera um erro se você a mascararFailed to execute operation: Invalid argument
:; O systemd tenta substituir o arquivo por um link simbólico para / dev / null. Não dizendo que esta resposta está incorreta, apenas algo para lembrar./lib/systemd/system
e/usr/lib/systemd/system
, portanto, eu fiz a pergunta separadamente, unix.stackexchange.com/questions/550001/…