EDIT : Acontece que minha primeira abordagem não funcionou como esperado. Uma seção [Install]
em um arquivo de substituição realmente não funciona e RequiresMountsFor=
parece funcionar apenas para montagens que são declaradas no fstab. Portanto, estou propondo uma alternativa que realizará os mesmos efeitos, mas usando diretivas diferentes.
Para evitar que a unidade seja iniciada, a menos que o volume /media/Elements
seja montado, use o ConditionPathIsMountPoint=
directiva que irá verificar e impedir que a unidade inicie a menos que esse diretório seja montado.
# /etc/systemd/system/transmission.service.d/override.conf
[Unit]
ConditionPathIsMountPoint=/media/Elements
(OBSERVAÇÃO: você pode usar o comando systemctl edit transmission.service
para abrir um editor neste arquivo de substituições).
Para acionar o início de transmission.service
sempre que o USB for montado, você precisará adicionar um link simbólico a ele em um diretório .wants/
da unidade de montagem. (Idealmente, isso seria cuidado por uma seção [Install]
, mas parece não funcionar em um arquivo de substituição.)
Crie manualmente com estes dois comandos:
$ sudo mkdir -p /etc/systemd/system/media-Elements.mount.wants/
$ sudo ln -sf /lib/systemd/system/transmission.service /etc/systemd/system/media-Elements.mount.wants/
Depois disso, monte /media/Elements
e veja Transmissão começar ...
Resposta original abaixo ...
Assim, a diretiva After=
só afeta a ordem, se ambas as unidades são enfileiradas para serem iniciadas, então esta será iniciada após a conclusão da outra, mas não acionará o início da outra. Você precisa Requires=
para isso.
Mas, para montagens, há um ótimo atalho em RequiresMountsFor=
, que pode levar as montadas como caminhos.
Você provavelmente também deseja configurar isso para que esta unidade seja iniciada quando a unidade USB for montada. Você pode acionar isso usando WantedBy=
(no [Install]
seção) e referindo-se à unidade .mount
daqui. Depois de configurá-lo e usar systemctl enable
para criar o relacionamento "Procurado", o início desta unidade será (também) acionado quando a unidade USB for montada (se isso for feito posteriormente e não durante a inicialização).
Colocando tudo junto:
# /etc/systemd/system/transmission.service.d/override.conf
[Unit]
RequiresMountsFor=/media/Elements "/media/Vault 13" "/media/Black Mesa"
[Install]
WantedBy=media-Elements.mount
WantedBy=media-Vault\x2013.mount
WantedBy=media-Black\x20Mesa.mount
Em seguida, ative esta unidade, que criará links simbólicos sob os diretórios *.mount.wants/
(os nomes exatos dos links simbólicos serão impressos em systemctl enable
output):
# systemctl enable transmission.service
Isso deve resolver isso.
Não está claro para mim por que você está listando as três montagens, já que no texto da pergunta você sugere apenas /media/Elements
é usado para armazenar os downloads da Transmissão ... Se esse é realmente o caso, você provavelmente poderia remover a outra dois e manter apenas as referências ao "Elementos".
( OBSERVAÇÃO : Eu não testei tudo isso antes de postar, mas estou confiante de que isso funcionará. Se por algum motivo isso não acontecer, me deixe um comentário com mais detalhes, Fico feliz em trabalhar com você para descobrir isso.)