Script systemd baseado em Symlink não iniciado na inicialização sem daemon-reload

2

Eu tenho um serviço systemd personalizado no CentOS 7 cujo script de inicialização vive sob controle de versão em /srv/etc/systemd/website.service :

[Unit]
Description=website
After=syslog.target network.target

[Service]
Type=forking
User=website
ExecStart=/opt/perl5/perls/perl-5.20.2/bin/hypnotoad /var/www/domains/<domain>/script/site.pl
ExecStop=/opt/perl5/perls/perl-5.20.2/bin/hypnotoad --stop /var/www/domains/<domain>/script/site.pl

[Install]
WantedBy=multi-user.target

Se eu executar systemctl enable /srv/etc/systemd/website.service , ele cria os links simbólicos e eu posso executar systemctl start website e o serviço aparece, mas ele reclama da falta da seção [Instalar], que claramente não está correta:

$ sudo systemctl enable /srv/etc/systemd/website.service 
Created symlink from /etc/systemd/system/website.service to /srv/etc/systemd/website.service.
The unit files have no [Install] section. They are not meant to be enabled
using systemctl.
Possible reasons for having this kind of units are:
1) A unit may be statically enabled by being symlinked from another unit's
   .wants/ or .requires/ directory.
2) A unit's purpose may be to act as a helper for some other unit which has
   a requirement dependency on it.
3) A unit may be started when needed via activation (socket, path, timer,
   D-Bus, udev, scripted systemctl call, ...).

Após a reinicialização, o serviço não é exibido e um systemctl start website retorna Failed to start website.service: Unit not found . Se eu executar systemctl daemon-reload , o comando start funcionará novamente.

No entanto, se eu copiar o arquivo em / etc / systemd / system e executar systemctl enable website , tudo funcionará como esperado e o serviço aparecerá imediatamente após a reinicialização.

É realmente possível fazer o que estou tentando fazer, ou eu só preciso viver com a lembrança de copiar manualmente o script systemd do repositório do Git se eu fizer alguma alteração?

    
por VirtualWolf 03.07.2017 / 12:29

1 resposta

1

Você deve verificar se a unidade à qual o link simbólico está se referindo está montada no momento em que os serviços estão sendo iniciados.

    
por 27.03.2018 / 19:17

Tags