O primeiro passo é determinar se você está usando NetworkManager
ou systemd-networkd
. Ative wait-online
para o que você está usando (assumindo systemd-networkd
para este exemplo):
systemctl enable systemd-networkd-wait-online.service
Ter seu serviço iniciado após o wait-online
service:
[Unit]
...
After=systemd-networkd-wait-online.service
Requires=systemd-networkd-wait-online.service
(requer uma variante mais estrita de wants
, neste caso parece que você quer a dependência difícil).
Isso deve fazer com que seu serviço seja iniciado depois que a rede estiver garantida.
Como alternativa (ou em conjunto com a solução anterior), você pode configurar o serviço para ser reiniciado quando falhar usando o sinalizador Restart=
:
[Unit]
...
Restart=on-failure
RestartSec=5
Esse pode ser o melhor método, porque não vai diminuir sua inicialização ( link - usar wait-online
é susceptível de retardar consideravelmente o seu tempo de arranque), mas se estiver preocupado com o que o serviço pode fazer quando falhar, escolha a opção 1 ou ambas.