
Я перешел с 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.