Eu só quero compartilhar algumas reflexões sobre minha primeira configuração do systemd. Até agora eu usei comandos como iniciar e parar desta vez eu quero mais.
Eu tenho um arco de execução de framboesa-pi. Eu tenho um HDD USB externo para armazenar dados. Eu quero rodar o samba para compartilhar pastas nessa unidade externa.
Problema: Se o HDD não estiver conectado, o samba não deve iniciar. Se o HDD for anexado mais tarde, o samba deve começar então. Se o HDD for desconectado durante a operação, o samba deve parar (possível perda de dados, acho que não há nada que eu possa fazer).
Depois de ler exemplos e manuais do sistema, percebi que:
/ etc / fstab
UUID="6509-D18E" /storage vfat defaults,nofail,x-systemd.device-timeout=20 0 2
/etc/systemd/system/smbd.service:
[Unit]
Description=Samba SMB/CIFS server
After=network.target nmbd.service winbindd.service
BindsTo=storage.mount
RequiresMountsFor=/storage
[Service]
Type=forking
PIDFile=/var/run/smbd.pid
ExecStart=/usr/bin/smbd -D
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target storage.mount
Os elementos-chave são nofail no fstab, se estiver faltando todo o meu sistema trancado durante a inicialização. Eu acho que ele informa ao systemd para continuar se o disco rígido não estiver conectado.
O WantedBy é usado para iniciar o samba se o disco rígido estiver conectado e BindsTo for responsável por interromper o samba se o ponto de montagem desaparecer.
Estou faltando alguma coisa ou existe uma solução ainda mais elegante?
felicidades