Запускать скрипт инициализации только после запуска сетевого интерфейса

2927
RobS

У меня безголовый медиа-сервер, использующий mpd, работающий на gentoo. Mpd настроен на запуск при загрузке (и у меня нет параллельно запускаемых сценариев rc), но, к сожалению, mpd не запустится, если он не сможет привязаться к интерфейсу. Я попытался дать моей беспроводной сети статический IP-адрес, но иногда mpd не запускается, потому что карта WLAN не связана с точкой доступа (я использую wpa_supplicant).

Теперь, когда запускается ssh, очень рад дождаться появления интерфейса. Но даже немного покопавшись, я не могу понять, как это происходит.

Мой ужасный хак для сценария mpd - просто подождать «достаточного» времени для подключения карты WLAN, но это не сработает при любых обстоятельствах.

У кого-нибудь есть указатели?

NB: Связанные вопросы, которые не отвечают на мой вопрос (но могут быть полезны для других, здесь):

запустить-скрипт-при подключении к беспроводной сети-в-Linux, и Linux-как-начать-скайп-или-другой-программы-только-когда-онлайн

1

4 ответа на вопрос

2
qedi

В скриптах запуска gentoo (в вашем примере /etc/init.d/mpd) должен быть

 depend() { ... } 

раздел в верхней части. Таким образом, init завершает определение порядка запуска. Перед запуском mpd вы должны поставить требование для завершения сети. Я думаю, что линия

 need net 

Проверьте, что находится в разделе зависимостей в /etc/init.d/sshd. Эта же строка, вероятно, должна работать, если вы добавите ее в сценарий запуска mpd.

1
geek

Общий подход заключается в попытке запустить mpd в цикле, пока он не запустится успешно. Я полагаю, что mpd обычно генерирует определенный код выхода (который вы можете перехватить в вашем скрипте запуска), когда он не может запуститься по определенным причинам.

0
Andy

От /etc/wpa_supplicant/ifupdown.sh:

# This file is executed by ifupdown in pre-up, post-up, pre-down and # post-down phases of network interface configuration. It allows # ifup(8), and ifdown(8) to manage wpa_supplicant(8) and wpa_cli(8) # processes running in daemon mode. 

Примерно в строке 144 (на моей копии) скрипта он, похоже, выполняет свои операции после запуска - вы должны иметь возможность разместить здесь свой mpd для запуска, если кто-то не может придумать лучшего места.

Я посмотрю, существует ли такой файл в моей установке. Благодарю. RobS 14 лет назад 0
К сожалению, в Gentoo такого файла нет. RobS 14 лет назад 0
0
Dennis Williamson

Один из ответов в первой ссылке, которую вы дали, предлагает добавить сценарий, в /etc/network/if-up.dкотором я бы предложил вам. Вы пробовали это?

В моем gentoo нет / etc / network RobS 14 лет назад 0

Похожие вопросы