O motivo pelo qual você está tendo este problema é porque você está usando After= , enquanto também precisa de Requires= ou Wants= .
Existem 3 propriedades principais para gerenciar dependências. Vou tentar explicar brevemente a diferença, mas você pode encontrar mais detalhes em Opções da Seção [Unidade] | freedesktop.org
-
After=Esta opção apenas define a ordem das unidades, não garante que o serviço tenha terminado de iniciar.
-
Wants=Esta opção permite que sua unidade inicie somente após o término de outra unidade. (Não importa se começou com sucesso ou não)
-
Requires=Assim como
Wants=, no entanto, isso fará com que sua unidade inicie somente depois que as dependências forem iniciadas com êxito.
Você também pode usar o inversa de cada uma dessas opções.
-
After=é invertido porBefore= -
Wants=é invertido porWantedBy= -
Requires=é invertido porRequiredBy=
Para corrigir seu problema, você precisa alterar seu serviço de montagem para:
[Unit]
Description=MountSmokeScreen
After=network.target
Before=sonarr.service radarr.service
WantedBy=sonarr.service radarr.service
[Service]
Type=oneshot
ExecStart=/home/samsepioldoloresh4ze/bin/check.mount
TimeoutStopSec=20
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
Ou você pode adicionar Wants=mountgdrive.service às unidades sonarr.service e radarr.service .
Você pode fazer isso sem modificar os arquivos padrão executando o seguinte (você precisa fazer o mesmo para radarr.service ):
systemctl edit sonarr.service
E insira o seguinte:
[Unit]
Wants=mountgdrive.service
Observação: você pode substituir Wants= por Requires ou WantedBy= por RequiredBy= se não quiser que os dois serviços sejam iniciados se mountgdrive.service falhar (embora Wants= seja geralmente suficiente e mesmo recomendado nos docs).