Как отложить выполнение модуля systemd до готовности сети?

Как отложить выполнение модуля systemd до готовности сети?

Я перешел с cron наsystemd-cronс моей нестабильной системой Debian, но теперь ежедневное «задание cron» часто дает сбой, потому что оно запускает mixmaster, который загружает свою базу данных из Интернета, и если cron-daily.timer срабатывает до того, как сеть заработает, после выхода из спящего режима в ОЗУ mixmaster не может связаться с сервером.

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

Можно ли отложить таймер до тех пор, пока сеть не заработает?

решение1

Используйте таймеры systemd вместо cron.

Затем в вашем systemd-unit вы можете указатьAfter=network-online.target and Wants=network-online.target.

решение2

Возможно, стоит использовать таймеры systemd вместо cron. Тогда вы сможете указать в юните, от чего он зависит.

https://wiki.archlinux.org/index.php/Systemd#Обработка_зависимостей

решение3

В моемнастраиватьзадание cron запускается каждую минуту, но завершается, если нет подключения к Интернету, с помощью проверки подключения, например

nc -zw3 github.com 22 || exit 0

Когда, наконец, появляется подключение к Интернету, раз в день запускаются задания anacron.

Связанный контент