minidlna в автозапуск (не хочет сам стартовать)

SLAX, Deep Style, ZenWalk

Модератор: Модераторы разделов

Ответить
Аватара пользователя
Archangel
Сообщения: 431
ОС: Slackware64-14.1

minidlna в автозапуск

Сообщение Archangel »

Установил на медиасервер minidlna, все замечательно, только после перезапуска сам не стартует, хотя:

Код: Выделить всё

$ ls -l /etc/rc.d/ | grep mini
-rwxr-xr-x 1 root root  1782 Дек 26 01:05 rc.minidlna*

Сам rc.minidlna:

Код: Выделить всё


   #! /bin/sh

   # chkconfig: 345 99 10
   # description: Fedora Startup/shutdown script for MiniDLNA daemon

   # If you have chkconfig, simply:
   # chkconfig --add minildna

   # Original author: Perry Clark

   ## BEGIN INIT INFO
   # Provides: minidlna
   # Required-Start: $local_fs $remote_fs $syslog $network
   # Should-Start:
   # Required-Stop: $local_fs $remote_fs $syslog $network
   # Should-Stop:
   # Default-Start: 3 4 5
   # Default-Stop: 0 1 2 6
   # Short-Description: Minidlna
   # Description: DLNA Media Server
   ### END INIT INFO

   ## EDIT FROM HERE

   # Installation details
   MINIDLNA="/usr/sbin/minidlna"
   ARGS="/etc/minidlna.conf"

   # Where to keep a log file
   MINIDLNA_LOG="/var/log/minidlna.log"

   # Where the PID lives
   PID_FILE="/var/run/minidlna.pid"

   ## STOP EDITING HERE

   # The path that is to be used for the script
   PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

   set -e

   # Only start if we can find the minidlna.conf.
   test -x $MINIDLNA || exit 0

   # Parse command line parameters.
   case $1 in
     start)
       echo -n "Starting MiniDLNA: "
       $MINIDLNA -f $ARGS -P $PID_FILE >> $MINIDLNA_LOG 2>&1
       echo "ok"
       ;;
     stop)
      echo -n "Stopping MiniDLNA: "
        for pidf in `/bin/ls $PID_FILE 2>/dev/null`; do
         if [ -s $pidf ]; then
           kill `cat $pidf` >/dev/null 2>&1
         fi
             rm -rf $PIF_FILE
         done
      echo "ok"
      ;;
     restart|reload|force-reload)
     echo "Restarting MiniDLNA: "

     $0 stop
       sleep 2
       $0 start

       ;;
     *)
         # Print help
         echo "Usage: /etc/init.d/minidlna {start|stop|restart|       reload|force-reload}"
         exit 1
         ;;
   esac

   exit 0

Ну и rc.local:

Код: Выделить всё

if [ -x /etc/rc.d/rc.vboxdrv ]; then
    /etc/rc.d/rc.vboxdrv start
fi

if [ -x /etc/rc.d/rc.minidlna ]; then
    /etc/rc.d/rc.minidlna start
fi

вручную все работает, но хотелось бы автоматом.
Спасибо сказали:
Аватара пользователя
bormant
Сообщения: 1354

Re: minidlna в автозапуск

Сообщение bormant »

Полагаю, или
sleep 2
(или сколько там времени ему нужно, чтобы успеть демонизироваться и отцепиться от консоли) в конец rc.local, или man bash на предмет встроенной команды "disown -h", или nohup (явно лишнее применительно к конкретному случаю).
Спасибо сказали:
Аватара пользователя
Archangel
Сообщения: 431
ОС: Slackware64-14.1

Re: minidlna в автозапуск

Сообщение Archangel »

sleep 2
не помогло, посмотрю остальное потом отпишусь.
Спасибо сказали:
Аватара пользователя
bormant
Сообщения: 1354

Re: minidlna в автозапуск

Сообщение bormant »

А если пробел из шебанга убрать?
#!/bin/sh

Собрал, поставил, стартует.
/etc/rc.d/rc.minidlna

Код: Выделить всё

#!/bin/sh
# chkconfig: 345 99 10
# description: Fedora Startup/shutdown script for MiniDLNA daemon
# If you have chkconfig, simply:
# chkconfig --add minildna
# Original author: Perry Clark
## BEGIN INIT INFO
# Provides: minidlna
# Required-Start: $local_fs $remote_fs $syslog $network
# Should-Start:
# Required-Stop: $local_fs $remote_fs $syslog $network
# Should-Stop:
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 6
# Short-Description: Minidlna
# Description: DLNA Media Server
### END INIT INFO
## EDIT FROM HERE
# Installation details
MINIDLNA="/usr/sbin/minidlna"
ARGS="-f /etc/minidlna.conf"

# Where to keep a log file
MINIDLNA_LOG="/var/log/minidlna.log"

# Where the PID lives
PID_FILE="/var/run/minidlna.pid"

## STOP EDITING HERE

# The path that is to be used for the script
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

set -e

# Only start if we can find the minidlna.conf.
test -x $MINIDLNA || exit 0

# Parse command line parameters.
case $1 in
start)
    echo -n "Starting MiniDLNA: "
    $MINIDLNA $ARGS -P $PID_FILE >> $MINIDLNA_LOG 2>&1
    echo "ok"
    ;;

    stop)
    echo -n "Stopping MiniDLNA: "
    for pidf in $(/bin/ls $PID_FILE 2>/dev/null); do
    if [ -s $pidf ]; then
        kill $(cat $pidf) >/dev/null 2>&1
    fi
    rm -rf $PIF_FILE
    done
    echo "ok"
    ;;

    restart|reload|force-reload)
    echo "Restarting MiniDLNA: "
    $0 stop
    sleep 2
    $0 start
    ;;

    *)
    # Print help
    echo "Usage: $0 {start|stop|restart|reload|force-reload}"
    exit 1
    ;;
esac

exit 0

/etc/rc.d/rc.local

Код: Выделить всё

#!/bin/sh
if [ -x /etc/rc.d/rc.minidlna ]; then
    /etc/rc.d/rc.minidlna start
fi

Код: Выделить всё

$ ls -l /etc/rc.d/rc.{minidlna,local}
-rwxr-xr-x 1 root root  345 Мар 27 21:47 /etc/rc.d/rc.local
-rwxr-xr-x 1 root root 1605 Мар 27 21:17 /etc/rc.d/rc.minidlna

Проверьте, до rc.local вообще дело доходит? Вставьте в начало что-то вроде
echo "Starting rc.local"
при загрузке будет виден этот вывод и "Starting MiniDLNA:", а следом "ok" ?
Дело в том, что в rc.M многое запускается через "." (source), если в подобном скрипте окажется exit, на этом выполнение и закончится.
Спасибо сказали:
Аватара пользователя
Archangel
Сообщения: 431
ОС: Slackware64-14.1

Re: minidlna в автозапуск

Сообщение Archangel »

Так, что-то я не понял, у меня rc.local, почему-то был не только в /etc/rc.d, но и просто в /etc, я туда и прописывал.
Прописал в правильный rc.local, /etc/rc.d/rc.local и заработало.
Спасибо за помощь.
Спасибо сказали:
Аватара пользователя
bormant
Сообщения: 1354

Re: minidlna в автозапуск

Сообщение bormant »

Код: Выделить всё

$ bzcat ~/MANIFEST.bz2 | grep 'Package\|/rc.local' | grep -B1 /rc.local
||   Package:  ./a/sysvinit-scripts-1.2-noarch-43.txz
-rwxr-xr-x root/root       272 2006-08-11 21:07 etc/rc.d/rc.local.new

$ grep -R /rc.local /var/log/packages
/var/log/packages/sysvinit-scripts-1.2-noarch-43:etc/rc.d/rc.local.new

Слакбук:
4.1.3 The /etc/rc.d Directory
4.1.3.5 Other Files
...
rc.local
Contains any specific startup commands for your system. This is empty after a fresh install, as it is reserved for local administrators. This script is run after all other initialization has taken place.
Посему, откуда у вас взялся /etc/rc.local не могу даже и предположить. Разве что с софтом каким пришёл ;-) или бэкап.

Всегда пожалуйста.
Спасибо сказали:
Ответить