¿Cómo retrasar una unidad systemd hasta que la red esté lista?

¿Cómo retrasar una unidad systemd hasta que la red esté lista?

He cambiado de cron asistemad-croncon mi sistema inestable Debian, pero ahora el "trabajo cron" diario a menudo falla, porque ejecuta mixmaster que recupera su base de datos de Internet y si el cron-daily.timer se activa antes de que la red esté activa, después de despertarse de la suspensión a la RAM, mixmaster no puede llegar al servidor.

Apr 24 11:02:23 run-parts[13608]: /usr/bin/mixmaster-update: Get failed for http://www.noreply.org/echolot/pgp-all.asc (500 Can't connect to www.noreply.org:80)
Apr 24 11:02:23 run-parts[13608]: Downloading of mlist and/or mixring failed (do you need a proxy?). Aborting.
Apr 24 11:02:23 su[13809]: pam_unix(su:session): session closed for user mixmaster
Apr 24 11:02:23 run-parts[13608]: run-parts: /etc/cron.daily/mixmaster exited with return code 22

¿Es posible retrasar el temporizador hasta que la red esté operativa?

Respuesta1

Utilice temporizadores systemd en lugar de cron.

Luego, en su unidad systemd, puede especificarAfter=network-online.target and Wants=network-online.target.

Respuesta2

Podría valer la pena utilizar los temporizadores de systemd en lugar de cron. Entonces deberías poder especificar en la unidad de qué depende.

https://wiki.archlinux.org/index.php/Systemd#Handling_dependencies

Respuesta3

En miconfiguraciónel trabajo cron se ejecuta cada minuto, pero se cierra si no hay conexión a Internet, mediante una prueba de conectividad como

nc -zw3 github.com 22 || exit 0

Cuando finalmente hay una conexión a Internet, una vez al día, se ejecutan los trabajos de anacron.

información relacionada