minidlna при старте ОС не вдит мультимедию

Автор Modigar, 14 мая 2018, 18:56:31

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Modigar

После загрузки компа, означенный сервис есть в запущенных. Виден телевизом.
Но если гулять с телевизора по папкам, то они все пустые.
Если на компе сервису сделать рестарт, тогда на телеке все видно.
Куда посмотреть?
PS: Debian 8.10, minidlna версии 1.1.6+dfsg-1~bpo8+1

Бениамин Масан

Видимо слишком рано стартует сервис, попробуйте сделать его старт позже или с задержкой в несколько секунд. Как конкретно это делать зависит от системы иницилизации. У меня на 9 ке минидлна стартует одним из последних, все ок. Но там системд так что мои конфиги вам бесполезны

ogost

логи смотреть надо, если не ошибаюсь, то в /var/log/minidlna.log
и в 8 тоже есть системдэ.

Modigar

Не думаю что сервис стартует раньше, чем происходит монтирование разделов.

endru

Цитата: Modigar от 15 мая 2018, 10:16:33Не думаю что сервис стартует раньше, чем происходит монтирование разделов.
Тут дело не в монтирование раздела, а связанных службах. Лучше изучать логи, чем делать догадки.

ecc83

Цитата: Modigar от 15 мая 2018, 10:16:33Не думаю что сервис стартует раньше

Тут эффективнее не "думать и ждать", а проверить и убедиться.
Сделать старт сервиса с задержкой на 10 секунд, пара пустяков. Уже давно можно было проверить.

Modigar

Цитата: ecc83 от 15 мая 2018, 12:34:30Уже давно можно было проверить.
Сложность в том, что я на работе, а комп дома. Как доберусь, проверю.
Кстати, намекните, как задержку сделать?

ecc83

Цитата: Modigar от 15 мая 2018, 17:33:31Кстати, намекните, как задержку сделать?

Если просто "в лоб", то находите файл юнита вашего сервиса. Открываете его от имени root текстовым редактором.
Там внутри увидите строку запуска модуля. Она выглядит так:

ExecStart=/путь_к_модулю

меняете её так:

ExecStart=sh -c 'sleep 15 && /путь_к_модулю'

После перезапуска компа, через 15 секунд проверяете как запустился ваш сервис:

sudo systemctl status minidlna.service

.. или как он там у вас называется.

Если всё сработает, тогда можно более "красиво" сделать задержку.
В юните можно указать после какого сервиса стартовать этому. А можно и так оставить.

Modigar

#8
Цитата: ecc83 от 15 мая 2018, 18:04:58находите файл юнита вашего сервиса
Я мож чего не так делаю, но в /etc нет файла содержащего строку
ExecStart=/бла/бла/.../minidlnad
Выходит надо сразу пробовать пункт:
Цитата: ecc83 от 15 мая 2018, 18:04:58более "красиво"


Cообщение объединено 15 мая 2018, 19:13:20

Цитата: ogost от 15 мая 2018, 03:03:55логи смотреть надо
Ничего нет в логах, указывающих на ошибку.

Была только вот такая сомнительная надпись:
ЦитироватьWARNING: Inotify max_user_watches [8192] is low or close to the number of used watches
  • and I do not have permission to increase this limit.  Please do so manually by writing a higher value into /proc/sys/fs/inotify/max_user_watches.
я поправил в /proc/sys/fs/inotify/max_user_watches
и это не помогло (избавиться от ворнинга в логе).
Но указанный в стартпосте трабл не решило

ecc83

Цитата: Modigar от 15 мая 2018, 19:10:55
Цитата: ecc83 от 15 мая 2018, 18:04:58находите файл юнита вашего сервиса
Я мож чего не так делаю, но в /etc нет файла содержащего строку
ExecStart=/бла/бла/.../minidlnad

Чудно. А в какой газете вы прочитали, что файлы юнитов лежат в /etc ?
Удивляет, что люди при малейшей собственной ошибке, даже не хотят выяснить причину и что то почитать, а сразу пишут жалобы на форум.

Юниты лежат в /lib/systemd/system и в /etc/systemd/system. Второе расположение имеет приоритет над первым.
То есть есть в двух каталогах будет одинаковый юнит, то работать будет тот, что в /etc/systemd/system

Цитата: Modigar от 15 мая 2018, 19:10:55
Выходит надо сразу пробовать пункт:

Цитата: ecc83 от 15 мая 2018, 18:04:58более "красиво"

Дык пробуйте, кто ж возражает. Только не сидите в засаде и не ждите подсказок, а почитайте про systemd.
Может тогда у вас и получится более красиво. Если будут конкретные вопросы по синтаксису или ещё чего спрашивайте, а просто наблюдать, как кто то починит вам вашу систему, у вас врят ли получится.

Modigar

#10
ass-way решения проблемы: в /etc/rc.local добавил запуск скрипта со sleep 15s и последующим рестартом сервиса.

Cообщение объединено 15 мая 2018, 20:18:35

Цитата: ecc83 от 15 мая 2018, 20:12:18А в какой газете вы прочитали, что файлы юнитов лежат в /etc ?
Да вот прям в этой:
Цитата: ecc83 от 15 мая 2018, 20:12:18Юниты лежат в /lib/systemd/system и в /etc/systemd/system.
И кто Вам сказал, что я искал по /etc не рекурсивно?

Кстати текста ExecStart=/бла/бла/.../minidlna
нет и в папке /lib/systemd (рекурсивный поиск)

ecc83

Цитата: Modigar от 15 мая 2018, 20:13:39
Кстати текста ExecStart=/бла/бла/.../minidlna
нет и в папке /lib/systemd (рекурсивный поиск)

Ну для меня очевидно, что если сервис существует, значит он как то запускается и я полностью исключаю вариант мистики.
По всей видимости файл запуска называется НЕ "/бла/бла/.../minidlna" , а как то иначе.
Можно просто пошарить по указанным мной каталогам и посмотреть название файлов с расширением *.service на предмет чего то похожего на "minidlna" Затем уже заглянуть внутрь и увидеть ExecStart

На всякий случай можно посмотреть скрипты в /etc/init.d тоже на предмет похожего названия.

Modigar

Цитата: ecc83 от 15 мая 2018, 20:39:32Можно просто пошарить по указанным мной каталогам и посмотреть название файлов с расширением *.service на предмет чего то похожего на "minidlna"
Ну вообще то не первый день за компом, умею пользоваться поиском по файловой системе, в т.ч и по содержимому файлов. ExecStart совместно с minidlna нет.
Цитата: ecc83 от 15 мая 2018, 20:39:32По всей видимости файл запуска называется НЕ "/бла/бла/.../minidlna" , а как то иначе.
естесственно...
Цитата: ecc83 от 15 мая 2018, 20:39:32На всякий случай можно посмотреть скрипты в /etc/init.d тоже на предмет похожего названия.
есть файл /etc/init.d/minidlna
но в нем нет строки содержащей ExecStart

ecc83

Цитата: Modigar от 15 мая 2018, 20:49:50есть файл /etc/init.d/minidlna
но в нем нет строки содержащей ExecStart

В нём такой строки не должно быть, это не systemd сервис.
Выложите этот файл куда то на файлообменник или если он не большой, тогда сюда под спойлер.


Modigar

Цитата: ecc83 от 15 мая 2018, 20:57:49Выложите этот файл куда то на файлообменник или если он не большой, тогда сюда под спойлер.
Открыть содержимое (спойлер)


#!/bin/sh
### BEGIN INIT INFO
# Provides:          minidlna
# Required-Start:    $local_fs $network $remote_fs
# Required-Stop:     $local_fs $network $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: minidlna server
# Description:       minidlna, DLNA/UPnP-AV media server.
### END INIT INFO

# Authors: Alexander GQ Gerasiov <gq@debian.org>
#    Benoît Knecht <benoit.knecht@fsfe.org>

# Do NOT "set -e"

# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="DLNA/UPnP-AV media server"
NAME=minidlna
DAEMON=/usr/sbin/minidlnad
PIDDIR=/run/$NAME
PIDFILE=$PIDDIR/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

# Defaults (could be overridden in /etc/default/$NAME)
CONFIGFILE=/etc/minidlna.conf
LOGFILE=/var/log/minidlna.log
USER=minidlna
GROUP=minidlna
DAEMON_OPTS=""

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

DAEMON_ARGS="-f $CONFIGFILE -P $PIDFILE $DAEMON_OPTS"

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
# and status_of_proc is working.
. /lib/lsb/init-functions

#
# Function that starts the daemon/service
#
do_start()
{
# Return
#   0 if daemon has been started
#   1 if daemon was already running
#   2 if daemon could not be started
touch $LOGFILE && chown $USER:$GROUP $LOGFILE || return 2
mkdir -p $PIDDIR && chown $USER:$GROUP $PIDDIR || return 2

start-stop-daemon --start --quiet --pidfile $PIDFILE \
--chuid $USER:$GROUP --exec $DAEMON --test > /dev/null \
|| return 1
start-stop-daemon --start --quiet --pidfile $PIDFILE \
--chuid $USER:$GROUP --exec $DAEMON -- \
$DAEMON_ARGS \
|| return 2
}

#
# Function that stops the daemon/service
#
do_stop()
{
# Return
#   0 if daemon has been stopped
#   1 if daemon was already stopped
#   2 if daemon could not be stopped
#   other if a failure occurred
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --exec $DAEMON
RETVAL="$?"
[ "$RETVAL" = 2 ] && return 2
# Wait for children to finish too if this is a daemon that forks
# and if the daemon is only ever run from this initscript.
start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
[ "$?" = 2 ] && return 2
# Many daemons don't delete their pidfiles when they exit.
rm -f $PIDFILE
return "$RETVAL"
}

#
# Function that sends a SIGUSR2 to the daemon/service
#
do_rotate()
{
touch $LOGFILE && chown $USER:$GROUP $LOGFILE || return 2
start-stop-daemon --stop --signal USR2 --quiet --pidfile $PIDFILE --exec $DAEMON
return 0
}

case "$1" in
  start)
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
  stop)
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
  status)
status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
;;
  restart|force-reload)
log_daemon_msg "Restarting $DESC" "$NAME"
do_stop
case "$?" in
  0|1)
if [ "$1" = "force-reload" ]; then
# Rescan the collection
DAEMON_ARGS="$DAEMON_ARGS -R"
fi
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
  *)
# Failed to stop
log_end_msg 1
;;
esac
;;
  rotate)
log_daemon_msg "Reopening logs for $DESC" "$NAME"
do_rotate
log_end_msg $?
;;
  *)
echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload|rotate}" >&2
exit 3
;;
esac

:

[свернуть]