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).