Отложенный запуск miniDLNA на маршрутизаторе NetGear WNRL3500l
Я писал ранее как установить медиа сервер miniDLNA на роутер NetGear WNRL3500l — https://moonback.ru/page/minidlna. А недавно я столкнулся с тем, что иногда miniDLNA не стартует после перезагрузки маршрутизатора.
При этом другие сервисы, которые должны запускаться автоматически при включении роутера, например Transmission, успешно стартовали.
В причинах такого поведения я не смог разобраться, но подсмотрел здесь одно решение, которое мне помогло.
Суть его заключается в повторной попытке запуска сервисов из автозагрузки спустя некоторое время после окончания монтирования разделов жесткого диска.
Чтобы создать и активировать такой скрипт вставьте в консоли роутера следующий код:
mkdir -p /opt/scripts cat << EOF > /opt/scripts/startproc.sh #!/bin/sh sleep \$3 if [ "\$(pidof \$1)" ] then logger "Process \$1 already started" else logger "Starting process \$1" \$2 start fi EOF echo "" >> /usr/local/sbin/post-mount echo "sh /opt/scripts/startproc.sh minidlna /opt/etc/init.d/S90minidlna 60s" >> /usr/local/sbin/post-mount chmod +x /usr/local/sbin/*
После чего сохраните все изменения и перезагрузите маршрутизатор:
flashfs save && flashfs commit && flashfs enable && reboot
Как работает скрипт
Скрипт startproc.sh запускается после монтирования разделов жесткого диска. В первую очередь он выжидает 60 секунд (параметр 3), а потом проверяет не запущена ли служба minidlna (параметр 1), если нет, то запускается команда запуска медиа сервера (параметр 2).
По аналогии с miniDLNA таким же способом можно запускать и другие сервисы, которые самостоятельно не хотят запускаться при включении маршрутизатора.