1

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

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

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

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

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

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

4 ответа4

2

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

 depend() { ... }

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

 need net

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

1

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

0

Из /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 для запуска, если кто-то не может придумать лучшего места.

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .