PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : minidlna startet nicht automatisch



hafgan
16.12.12, 11:47
Hallo,

ich habe mir einen NAS gebastelt, auf dem Debian Wheezy läuft. Darüber möchte ich über minidlna Filme usw auf den Fernseher streamen.

Das funktioniert, wenn ich minidlna manuell starte.

/etc/init.d/minidlna start

Ich möchte aber dass minidlna als Daemon gleich beim Systemstart mit gestartet wird. Leider tut er das nicht:

/etc/init.d/minidlna status
[FAIL] minidlna is not running ... failed!

Es wurde zum Runlevel hinzugefügt (2,3,4,5,):

update-rc.d minidlna defaults

In der /etc/defaults/minidlna wurde ebenfalls Daemon aktiviert:

# Start the daemon if set to "yes"
START_DAEMON="yes"


In den Logfiles steht auch kein Eintrag mit minidlna.

Jemand eine Idee, warum es nicht starten will ohne Hilfe?

Gruß
hafgan

DrunkenFreak
16.12.12, 12:42
Braucht es vllt. irgendwelche Abhängigkeiten? Was passiert denn, wenn du ein "date > /tmp/minidlna.out" vorne in das Skript reinschreibst? Wird es überhaupt gestartet?

hafgan
16.12.12, 13:00
Danke, gute Idee:


# cat minidlna.out
Sun Dec 16 13:47:13 CET 2012

Skript wird also ausgeführt, startet aber trotzdem nicht minidlna. Aus irgend einem Grund bricht er wohl den Startvorgang ab.

Seltsam, mit 'date' im Skript bekomme ich diese Fehlermeldung im Log. Ohne Date, nicht. (Starten tut er in beiden Fällen nicht). Könnt das damit zusammen hängen?

[2012/12/16 13:46:29] minidlna.c:155: warn: received signal 15, good-bye
[2012/12/16 13:46:30] sql.c:41: error: SQL ERROR 8 [attempt to write a readonly database]
UPDATE SETTINGS set UPDATE_ID = 0


Abhängigkeiten sollten mit apt-get eigentlich alle berücksichtigt sein.

Gruß
hafgan

Aqualung
16.12.12, 15:56
/etc/minidlna.conf



# Path to the directory that should hold the database and album art cache.
#db_dir=/var/lib/minidlna


/var/lib/ vorhanden/ und Platz dort?

hafgan
16.12.12, 16:08
# cat /etc/minidlna.conf | grep db_dir
# from the db_dir directory (see below).
#db_dir=/var/lib/minidlna


# ls -alF /var/lib/minidlna/
insgesamt 35264
drwxr-xr-x 3 minidlna minidlna 4096 Nov 20 22:15 ./
drwxr-xr-x 32 root root 4096 Nov 20 22:09 ../
drwxr-xr-x 3 root root 4096 Nov 20 22:15 art_cache/
-rw-r--r-- 1 root root 36098048 Dez 16 12:36 files.db


# df -h
Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf
rootfs 9,2G 2,0G 6,8G 23% /
udev 10M 0 10M 0% /dev
tmpfs 395M 264K 395M 1% /run
/dev/disk/by-uuid/4ca842a2-2a71-4ec4-ae70-9beb7687f6a2 9,2G 2,0G 6,8G 23% /
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 1,2G 0 1,2G 0% /run/shm
/dev/md1 1,8T 327G 1,4T 19% /home
tmpfs 2,0G 0 2,0G 0% /tmp

Würde sagen passt soweit, oder?

Aqualung
16.12.12, 16:52
Bei mir:


ls -alF /var/lib/minidlna/
insgesamt 84
drwxr-xr-x 2 minidlna minidlna 4096 Dez 16 16:39 ./
drwxr-xr-x 47 root root 4096 Dez 16 16:38 ../
-rw-r--r-- 1 minidlna minidlna 77824 Dez 16 16:41 files.db




ps axwwu | grep minidlna
minidlna 2257 0.0 3.3 38180 6376 ? Ssl 16:41 0:00 /usr/bin/minidlna -f /etc/minidlna.conf -P /run/minidlna/minidlna.pid



Gibts bei Dir user/group minidlna?


/etc/group:minidlna:x:118:


/etc/passwd:minidlna:x:112:118:MiniDLNA server,,,:/var/lib/minidlna:/usr/sbin/nologin

Vllt. einfach minidlna komplett neu installieren?

hafgan
16.12.12, 17:18
Die gruppe gibts.

Ich habe die Anwendung komplett (purge) deinstalliert und neu installiert. Danach gehörte die Datenbank minidlna:minidlna.

Läuft trotzdem nicht von alleine ...

Das gibts doch nicht. Du hast damit keine Probleme?

hafgan
24.12.12, 14:43
Ich habs jetzt doch noch hingekriegt: Aber SEHR unschön!

in der ersten Zeile des Startskripts /etc/init.d/minidlna habe ich eingefügt:

sleep 30

Bleibt dann zwar 30 sek beim Bootvorgang hängen, aber danach ist minidlna verfügbar. Ich vermute das hängt mit mit dem Netzwerk zusammen. Minidlna benötigt ja die Netzwerkschnittstelle. Kann das sein, dass wenn die IP noch nicht bezogen ist, das Skript abbricht?

Hat da jemand vielleicht eine elegantere Idee?

Gruß
hafgan

roadracer
24.12.12, 15:16
Vll ein "sleep 30 && wasauchimmer &"?
Auch nicht sehr schön aber ein bisschen besser, dann bleibt der bootvorgang da nicht hängen.
Kannst du dem Bootscript vll eine geringere Priorität geben? Dann wird es erst später nach dem Netzwerk gestartet.

DrunkenFreak
24.12.12, 15:37
Hat da jemand vielleicht eine elegantere Idee?

Normalerweise sollte das Initskript eine Abhängigkeit mitbringen:



#...
Required-Start: network
#...

Da die Skripte alle nach und nach ausgeführt werden, ist es verwunderlich, dass ein Sleep tatsächlich was bringt.

Du könntest auch mal direkt im Runlevel (/etc/rc?.d) nachgucken in welcher Reihenfolge die Skripte gestartet werden. Niedrigere Zahlen bedeuten früheres Starten.

hafgan
24.12.12, 15:49
Die Reihenfolge in rc2.d sieht so aus:

lrwxrwxrwx 1 root root 14 Dez 21 15:13 S01motd -> ../init.d/motd*
lrwxrwxrwx 1 root root 17 Dez 21 15:48 S13rpcbind -> ../init.d/rpcbind*
lrwxrwxrwx 1 root root 20 Dez 21 15:50 S14nfs-common -> ../init.d/nfs-common*
lrwxrwxrwx 1 root root 22 Dez 21 15:50 S16acpi-fakekey -> ../init.d/acpi-fakekey*
lrwxrwxrwx 1 root root 15 Dez 24 02:19 S16munin -> ../init.d/munin*
lrwxrwxrwx 1 root root 20 Dez 24 02:20 S16munin-node -> ../init.d/munin-node*
lrwxrwxrwx 1 root root 17 Dez 21 15:50 S16rsyslog -> ../init.d/rsyslog*
lrwxrwxrwx 1 root root 15 Dez 21 15:50 S17acpid -> ../init.d/acpid*
lrwxrwxrwx 1 root root 22 Dez 21 15:50 S17acpi-support -> ../init.d/acpi-support*
lrwxrwxrwx 1 root root 17 Dez 21 15:50 S17anacron -> ../init.d/anacron*
lrwxrwxrwx 1 root root 13 Dez 21 15:50 S17atd -> ../init.d/atd*
lrwxrwxrwx 1 root root 14 Dez 21 15:50 S17cron -> ../init.d/cron*
lrwxrwxrwx 1 root root 14 Dez 21 15:50 S17dbus -> ../init.d/dbus*
lrwxrwxrwx 1 root root 15 Dez 21 15:50 S17exim4 -> ../init.d/exim4*
lrwxrwxrwx 1 root root 15 Dez 21 15:50 S17mdadm -> ../init.d/mdadm*
lrwxrwxrwx 1 root root 15 Dez 21 16:04 S17rsync -> ../init.d/rsync*
lrwxrwxrwx 1 root root 13 Dez 21 15:50 S17ssh -> ../init.d/ssh*
lrwxrwxrwx 1 root root 22 Dez 21 15:50 S18avahi-daemon -> ../init.d/avahi-daemon*
lrwxrwxrwx 1 root root 18 Dez 21 15:50 S19bootlogs -> ../init.d/bootlogs*
lrwxrwxrwx 1 root root 14 Dez 21 15:50 S19cups -> ../init.d/cups*
lrwxrwxrwx 1 root root 15 Dez 21 15:51 S19saned -> ../init.d/saned*
lrwxrwxrwx 1 root root 18 Dez 24 02:02 S20minidlna -> ../init.d/minidlna*
lrwxrwxrwx 1 root root 18 Dez 21 15:50 S20rc.local -> ../init.d/rc.local*
lrwxrwxrwx 1 root root 19 Dez 21 15:50 S20rmnologin -> ../init.d/rmnologin*


Im Startskript steht das Netzwerk nur ganz oben als Kommentar:

### BEGIN INIT INFO
# Provides: minidlna
# Required-Start: $network $local_fs $remote_fs
# Required-Stop:: $network $local_fs $remote_fs
# Should-Start: $all
# Should-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start minidlna at boot time
# Description: Manage the minidlna daemon, a DLNA/UPnP-AV media server.
### END INIT INFO

Im Skript finde ich jetzt keine Abfrage. Soll aber nicht viel heißen! ;) Evtl. finde ich es nicht. Hier ist das ganze /etc/init.d/minidlna:

#!/bin/sh
#
# MiniDLNA initscript
#
# Based on the mediatomb debian package.
# Original authors: Tor Krill <tor@excito.com>
# Leonhard Wimmer <leo@mediatomb.cc>
# Andres Mejia <mcitadel@gmail.com>
#
# Modified by: Benoît Knecht <benoit.knecht@fsfe.org>
#
### BEGIN INIT INFO
# Provides: minidlna
# Required-Start: $network $local_fs $remote_fs
# Required-Stop:: $network $local_fs $remote_fs
# Should-Start: $all
# Should-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start minidlna at boot time
# Description: Manage the minidlna daemon, a DLNA/UPnP-AV media server.
### END INIT INFO
sleep 30

unset USER

# 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/bin/minidlna
PIDDIR=/run/$NAME
PIDFILE=$PIDDIR/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
DEFAULT=/etc/default/$NAME

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

# Read configuration variable file if it is present
[ -r $DEFAULT ] && . $DEFAULT

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

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions

# Do not start the daemon if NO_START is enabled in DEFAULT
if [ "$START_DAEMON" != "yes" ] && [ "$1" != "stop" ]; then
log_warning_msg "$NAME: Not starting $DESC."
log_warning_msg "$NAME: Disabled in $DEFAULT."
exit 0
fi

# Set the default configuration file
if [ -z $CONFIGFILE ]; then
CONFIGFILE=/etc/minidlna.conf
fi

# Set the default log file
if [ -z $LOGFILE ]; then
LOGFILE=/var/log/minidlna.log
fi

# Run as `minidlna' if USER is not specified or is `root'
if [ -z $USER ]; then
USER=minidlna
fi

# If no group is specified, use USER
if [ -z $GROUP ]; then
GROUP=$USER
fi

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

#
# 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
if [ ! -d $PIDDIR ]; then
mkdir $PIDDIR || return 2
fi
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 --name $NAME
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 -rf $PIDDIR
return "$RETVAL"
}

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 -p "$PIDFILE" "$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
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
exit 3
;;
esac

:

hafgan
27.12.12, 09:43
Guten Morgen!

Ich hab das jetzt erstmal so hingenommen und auch festgestellt, dass es ein

sleep 10 auch tut. (Vielleicht reichen ja auch 5 ... mal sehen).

Allerdings liegt das offensichtlich nicht an minidlna:
Ich habe jetzt noch ein NFS eingerichtet, das nach dem reboot ebenfalls nicht mehr gelaufen ist. Die Statusabfrage von /etc/init.d/nfs-kernel-server zeigte in diesem Fall zwar, dass er läuft. Es gab aber keine Verbindung. Erst nach einem Restart war das mounten möglich. Auch hier half wieder das berühmte sleep 10.

Da ist doch etwas anderes im Argen ...

Logfiles zeigten keinen Unterschied zwischen dem Start beim Boot, oder beim manuellen Restart.

@ Roadracer, wie meinst Du das?

sleep 10 &&
Ich habe mal ein df hinten angehängt, aber der bleibt dann da trotzdem hängen und wartet ab.

Gruß
hafgan

roadracer
27.12.12, 10:48
ne kein
sleep 10 && ich meine
sleep 30 && wasauchimmer & Das && cattet zwei Befehle zusammen und ein & lässt sie dann im Hintergrund laufen.