Как известно systemd позволяет гибко оперировать зависимостями. Вы можете сделать так, что сервис, например nginx, будет ждать пока поднимется сеть, будет примонтирован диск с данными, стартанет бэкенд и так далее. Но если вы это читаете, значит вы наверняка заметили, что если выставить для сервиса зависимость вида Requires=network-online.target или After=network-online.target Сервис все равно стартует до того как сеть фактически была поднята. Дело все в том, что по-умолчанию ( ¯\_(ツ*_* )_/¯ ) во многих дистрибутивах выключена проверка на наличие возможности связываться с внешними узлами сети и network-online.target стартует сразу после network.target, который сеть-то саму не проверяет, а просто следит, что стек TCP/IP в ядре поднялся. Проверка наличия возможности связываться с другими узлами сети в том числе с использованием DNS, обеспечивается сервисом systemd-networkd-wait-online.service. Соответственно, чтобы решить проблему активируем сервис systemctl enable systemd-networkd-wait-
QuickFix - застравляем systemd запускать сервис после настройки сети
23 октября 201823 окт 2018
272
1 мин