[РЕШЕНО] systemd и After=network.target

Пытаюсь заставить systemd запускать демона ПОСЛЕ поднятия сети, и с удивлением обнаруживаю, что плевать он на это хотел.
Писал в юните
Arter=network.target
– игнорит.
Добавлял
Wants=network.target
и даже
Requires=network.target
– ноль внимания. Все равно демон
$ cat /etc/systemd/system/chrony.service 
[Unit]
Description=Chrony Network Time Daemon
Arter=network.target
Requires=network.target
[Service]
Type=forking
ExecStart=/usr/sbin/chronyd
PIDFile=/var/run/chronyd.pid
[Install]
WantedBy=multi-user.target
запускается на две-три секунды РАНЬШЕ сети:
$ systemctl status network.target
network.target - Network
          Loaded: loaded (/usr/lib/systemd/system/network.target; static)
          Active: active since Fri, 17 Aug 2012 18:52:11 +0400
            Docs: man:systemd.special(7)
$ systemctl status localnet.service 
localnet.service - Local Network
          Loaded: loaded (/etc/systemd/system/localnet.service; enabled)
          Active: active (exited) since Fri, 17 Aug 2012 18:52:11 +0400
         Process: 398 ExecStart=/etc/net/localnet start (code=exited, status=0/SUCCESS)
          CGroup: name=systemd:/system/localnet.service
# systemctl status chrony.service
chrony.service - Chrony Network Time Daemon
          Loaded: loaded (/etc/systemd/system/chrony.service; enabled)
          Active: active (running) since Fri, 17 Aug 2012 18:52:08 +0400
         Process: 344 ExecStart=/usr/sbin/chronyd (code=exited, status=0/SUCCESS)
        Main PID: 354 (chronyd)
          CGroup: name=systemd:/system/chrony.service
                  └ 354 /usr/sbin/chronyd
Aug 17 18:52:08 first chronyd[354]: Could not send to 194.149.67.129 : Network is unreachable
Aug 17 18:52:09 first chronyd[354]: Could not send to 62.117.76.134 : Network is unreachable
Aug 17 18:52:09 first chronyd[354]: Could not send to 192.36.143.152 : Network is unreachable
Aug 17 18:52:09 first chronyd[354]: Could not send to 129.69.1.153 : Network is unreachable
Aug 17 18:52:09 first chronyd[354]: Could not send to 62.149.0.30 : Network is unreachable
Aug 17 18:52:09 first chronyd[354]: Could not send to 194.149.67.129 : Network is unreachable
Aug 17 18:52:10 first chronyd[354]: Could not send to 62.117.76.134 : Network is unreachable
Aug 17 18:52:10 first chronyd[354]: NTP packet received from unauthorised host 0.0.0.0 port 55389
Aug 17 18:52:11 first chronyd[354]: System's initial offset : 428.125501 seconds fast of true (step)
Aug 17 18:47:14 first chronyd[354]: Selected source 62.149.0.30
P.S.
Расследование показало, что systemd самовольно переопределяет зависимости юнита, в результате чего
Arter=network.target
странным образом превращается в
# systemctl show chrony.service|grep After=
After=systemd-journald.socket basic.target
Пробовал
DefaultDependencies=false
– не помогает, демон запускается только раньше, а анализ показывает
$ systemctl show chrony.service|grep After=
After=systemd-journald.socket

Получается, что или я чего-то не понимаю в колбасных обрезках, или это шикарный баг в systemd?
Тоже с такой бедой столкнулся, dnsmasq раз 10 запускался/перезапускался во время загрузки, первые запуски были раньше чем стартовала сеть, в итоге он как dhcp еще работал, а как dns уже нет. Я наверно с день с ним парился, в итоге откатился на обычную init с стему. сырое оно еще это systemd, задумка ИХМО замечательная, а исполнение пока еще не очень. Но это так лирическое отступление.

А что у тебя сеть поднимает? может в Arter= добавить сервис(ы) который настраивает сеть, а не network.target?
Natrio
Arter=network.target
???
А второй копипастит )))
vit.ok
может в Arter= добавить сервис(ы)

Natrio
Получается, что или я чего-то не понимаю в колбасных обрезках, или это шикарный баг в systemd?
Ага баг! или колбасные обрезки испортились )))
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
nafanja
Natrio
Arter=network.target
???
Спасибо, исправил :)
[Unit]
Description=Chrony Network Time Daemon
After=network.target
[Service]
Type=forking
ExecStart=/usr/sbin/chronyd
PIDFile=/var/run/chronyd.pid
[Install]
WantedBy=multi-user.target
Wants= убрал, ибо кажется он несовместим с After= , только с Before=
К счастью, и без него работает.

Осталось постать исправления мейнтейнеру пакета chrony, который забыл добавить After в юнит.
Natrio
Спасибо
Взаимно.
Рассмешил, представил как ты несколько часов сидел, мучился что ж не работает, дегустировал колбасные обрезки, расследования проводил, даже баг нашел, а непослушный systemd все продолжал самовольничать )))
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
c одной стороны радует, что системд продолжает работать даже когда ты ему ахинею даешь))) , но могу понять Natrio, я бы тоже бы подумал что баг ибо привык , что если накосячил, не должно работать, а если пашет, но не так как надо - баг. Также поддержу, чтото мне Want не нравится, я призываю временно юзать только Requires. Что то у меня тоже через раз в Want, ну или я косячил тоже xD..
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
Почему до сих пор никто не спросил - в какой лог нужно было глянуть Natrio, чтоб увидеть, что в конфиге имеется синтаксическая ошибка?
потомучто табак кончился и мы из леса man-ов вернулись в вигвамы, не дойдя до логов. ;)
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
nafanja
Natrio
Arter=network.target
???
А второй копипастит )))
vit.ok
может в Arter= добавить сервис(ы)
Верно, копипаст) просто у меня реально была заморочка с systemd, dnsmasq и network.target, и ответ был так сказать, на эмоциях. Правда этот баг я словил на федоре, меня относительно недавно “гениальная” идея посетила, на шлюз воткнуть федору…
Всю неделю пока “втыкал” плювался… а больше всего убило что за эту неделю внутренности федоры изучил местами лучше бывалых федорастов с русского комьюнити федоры, убило когда пришлось тамошним местным, рассказывать про network-scripts/route-eth0 и то что network.service из него роуты афигеть как криво поднимала, в то время как NetworkManager.service без проблем это делал, но вот dnsmasq запускался/перезапускался после каждого чиха от NetworkManager-а. Я даже лог на память сохранил!) так сказать для освежения в памяти если вдруг опять посетит “гениальная” мысль, федору попробовать.
vadik
Почему до сих пор никто не спросил - в какой лог нужно было глянуть Natrio, чтоб увидеть, что в конфиге имеется синтаксическая ошибка?
Если вдруг кого интересует ответ на мой вопрос - по соседству подсказали:
systemd --test [--user|--system] --unit=unit-name
Не лог, но проверить сам юнит можно.
 
Зарегистрироваться или войдите чтобы оставить сообщение.