Ainda estou lidando com o systemd e me deparei com algo. Não é tanto um problema, mas eu gostaria de aprender mais sobre como isso é. Eu não encontrei nenhuma referência a isso em outro lugar.
Primeiramente, eu entendo que os arquivos de unidade personalizados para serviços devem estar em /etc/systemd/system
. No entanto, seria bom para o gerenciamento de nossos servidores se os arquivos da unidade pudessem estar localizados em outro lugar.
Na documentação, vi que você pode "vincular" os arquivos da unidade assim:
systemctl link /path/to/servicename.service
Isso criará um link para o acima em /etc/systemd/system
. Agora você pode iniciar / parar este serviço. Na superfície, isso parecia ser uma boa maneira de gerenciar nossos serviços.
No entanto, tentar ativar esse arquivo de unidade 'vinculado' resulta em falha:
root@test1:/etc/systemd/system# systemctl link /root/myservice.service
Created symlink from /etc/systemd/system/myservice.service to /root/myservice.service.
root@test1:/etc/systemd/system# systemctl status myservice.service
* myservice.service - My Test Service
Loaded: loaded (/root/myservice.service; linked; vendor preset: enabled)
root@test1:/etc/systemd/system# systemctl enable myservice.service
Failed to execute operation: No such file or directory
Usando exatamente o mesmo arquivo de unidade, mas copiado para /etc/systemd/system
em vez de vinculado, você obtém:
root@test1:/etc/systemd/system# cp -p /root/myservice.service .
root@test1:/etc/systemd/system# systemctl daemon-reload
root@test1:/etc/systemd/system# systemctl status myservice.service
* myservice.service - My Test Service
Loaded: loaded (/etc/systemd/system/myservice.service; disabled; vendor preset: enabled)
root@test1:/etc/systemd/system# systemctl enable myservice.service
Created symlink from /etc/systemd/system/multi-user.target.wants/myservice.service to /etc/systemd/system/myservice.service.
A partir disso, parece que não é possível ativar os arquivos de unidade vinculados a serem chamados na inicialização do sistema.
Se este for o caso, qual é o objetivo da funcionalidade 'link'? Dos documentos, diz:
link FILENAME
Link a unit file that is not in the unit file search paths into the unit file search path. This requires an absolute path to a unit file. The effect of this can be undone with disable. The effect of this command is that a unit file is available for start and other commands although it is not installed directly in the unit search path.