Esta é uma limitação conhecida . Queria ter uma solução para você.
Temos um aplicativo interno com serviços systemd que queremos implementar fora dos diretórios systemd normais (/ etc / systemd / system e / usr / lib / systemd / system). Esse local está em outro disco (/ mnt / data no exemplo).
O serviço systemd é ativado por:
systemctl enable /mnt/data/sprinterd.service
que cria um link simbólico em / etc / systemd / system
lrwxrwxrwx. 1 root root 27 Jun 20 22:47 sprinterd.service -> /mnt/data/sprinterd.service
Após a reinicialização, o serviço não é carregado porque o arquivo da unidade não pode ser encontrado. De journalctl, primeiro um erro que o serviço não conseguiu carregar, depois disso a montagem do disco onde a unidade está localizada.
Cannot add dependency job for unit sprinterd.service, ignoring: Unit sprinterd.service failed to load: No such file or directory.
systemd[1]: Mounted /mnt/data.
De / etc / fstab:
/dev/disk/by-uuid/c55e944f-5c63-48ad-8cd2-bd32d7b35c82 /mnt/data auto nosuid,nodev,nofail,x-gvfs-show 0 0
Para completar o arquivo da unidade de serviço:
[Unit]
Description=sprinterd
[Service]
Type=simple
Environment=TERM=linux
ExecStart=/srv/s1.erp/bin/sprinterd
Restart=always
RestartSec=5
KillSignal=SIGKILL
[Install]
WantedBy=multi-user.target
Eu testei isso no RHEL 7 e no openSuSE 13.2.
É suportado ter um arquivo de unidade de serviço do sistema em outro disco diferente de / etc ou / usr? Como a ordem de execução entre a montagem do disco e o carregamento dos arquivos da unidade do sistema pode ser alterada?
Esta é uma limitação conhecida . Queria ter uma solução para você.
Tags systemd