Запускаю # /etc/rc.d/init.d/network restart при быстро отвечающем dhcp и при поднятом интерфейсе. Получаю в протоколе: ===== Nov 23 16:59:03 parkheights dhcpcd.exe: interface eth0 has been configured with old IP=69.143.81.80 Nov 23 16:59:03 parkheights network: Bringing up interface eth0: succeeded Nov 23 16:59:04 parkheights dhcpcd[7394]: terminating on signal 1 ===== И в результате интерфейс опущен. По моему мнению это получается потому, service network stop отсоединяет процесс убивания интерфейса, потом его быстренько подымает, и затем уже не обращает внимания что отсоединённый процесс его догнал и убил. Повторный вызов service network restart всё восстанавливает. Как временный wokraround я поставил в фунцию restart между stop и start sleep 5 и проблема исчезла.
> service network stop отсоединяет процесс убивания интерфейса, потом его > быстренько подымает, и затем уже не обращает внимания что отсоединённый Можно указать файл и номер строки? Я вижу только последовательные действия.
(In reply to comment #1) > > service network stop отсоединяет процесс убивания интерфейса, потом его > > быстренько подымает, и затем уже не обращает внимания что отсоединённый > Можно указать файл и номер строки? Я вижу только последовательные действия. Вы правы. В файле /etc/rc.d/init.d/network, строки 175 - 176, написаны последовательные действия. И в строке 154 вызывается ifdown без отсоединения порождённого процесса. И даже более того, вызываемый оттуда /sbin/ifdown - шелловский скрипт, который можно почитать и убедиться что там ничего не отсоединяется для асинхронного выполнения. Однако, как я предполагаю, /sbin/dhcpcd видимо ведёт себя следующим образом: будучи вызван для опускания интерфейса мгновенно возвращает результат типа "всё сделано" а уже потом про себя потихоньку опускает интерфейс. Сергей.
Спасибо, теперь определились вроде бы. Что скажет мантейнер dhcpcd?
Без разбирательства в коде я могу только делать искусственную паузу после останова dhcpcd в ifdown :-/
Так пока пусть и будет. net-scripts-0.5.3