Eu entendo que systemd
armazena arquivos de unidade em locais diferentes para diferentes versões do Linux. No RHEL, está em /usr/lib/systemd/system/
, enquanto em máquinas baseadas em Debian está em /lib/systemd/system/
.
No entanto, na minha máquina Ubuntu 18.04, acabei de instalar o Elasticsearch usando um .deb
arquivo e seu systemd
arquivo de unidade foi instalado em /usr/lib/systemd/system/
, mas systemd
ainda é possível pegá-lo.
$ uname -a
Linux nucleolus 4.15.0-46-generic #49-Ubuntu SMP Wed Feb 6 09:33:07 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
$ sudo systemctl status elasticsearch.service
● elasticsearch.service - Elasticsearch
Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: http://www.elastic.co
Observe que o caminho é /usr/lib/systemd/system/elasticsearch.service
.
Então, por que um systemd
arquivo de unidade em /usr/lib/systemd/system/
ainda funciona para o Ubuntu? Qual é o caminho real de carregamento do arquivo unitário para sistemas Debian/Ubuntu?
Os caminhos
systemd
que procuram por arquivos de unidade são lidosUnitPath
e podem ser consultados comsystemctl
.Como você pode ver, isso não inclui
/usr/lib/systemd/system
, que é a saída em um sistema Ubuntu 18.04. OUnitPath
é gerado durante o tempo de execução e apenas os diretórios que realmente existem são mostrados aqui.Portanto, criar o diretório foi suficiente para adicionar
/usr/lib/systemd/system
aoUnitPath
, o que provavelmente foi feito instalando o Elasticsearch.Quais diretórios são levados em consideração ao construir
UnitPath
podem ser consultadospkg-config
e as variáveissystemdsystemunitdir
esystemdsystemunitpath
.No é
src/core/systemd.pc.in
osystemdsystemunitpath
seguinte.