it-swarm.com.de

Probleme beim Start des init.d-Skripts

Ich habe dieses init.d-Skript, das ich versuche, mit Ubuntu zu starten, aber es wird nicht beim Start ausgeführt. Es funktioniert jedoch, wenn ich "Sudo /etc/init.d/couchpotato start" eingebe. Irgendwelche Ideen, wie man es beim Booten starten kann?

#! /bin/sh

### BEGIN INIT INFO
# Provides:          CouchPotato application instance
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts instance of CouchPotato
# Description:       starts instance of CouchPotato using start-stop-daemon
### END INIT INFO

############### EDIT ME ##################
# path to app
APP_PATH=/usr/local/sbin/couchpotato

# path to python bin
DAEMON=/usr/bin/python

# startup args
DAEMON_OPTS=" CouchPotato.py -q"

# script name
NAME=couchpotato

# app name
DESC=CouchPotato

# user
RUN_AS=root

PID_FILE=/var/run/couchpotato.pid

############### END EDIT ME ##################

test -x $DAEMON || exit 0

set -e

case "$1" in
  start)
        echo "Starting $DESC"
        start-stop-daemon -d $APP_PATH -c $RUN_AS --start --background --pidfile $PID_FILE  --make-pidfile --exec $DAEMON -- $DAEMON_OPTS
        ;;
  stop)
        echo "Stopping $DESC"
        start-stop-daemon --stop --pidfile $PID_FILE
        ;;

  restart|force-reload)
        echo "Restarting $DESC"
        start-stop-daemon --stop --pidfile $PID_FILE
        sleep 15
        start-stop-daemon -d $APP_PATH -c $RUN_AS --start --background --pidfile $PID_FILE  --make-pidfile --exec $DAEMON -- $DAEMON_OPTS
        ;;
  *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac

exit 0
3
Will

Sie können versuchen, den Befehl insserv zu verwenden. Aus dem Befehl "man insserv" in einer 10.10-Installation kann ich lesen:

insserv - Enable an installed system init script.
2
jfmessier

Sie können versuchen, dies im Terminal auszuführen:

Sudo chmod 755 /etc/init.d/couchpotato

Standardmäßig ist Sudo update-rc.d couchpotato aktiviert

===============================

Und wenn Sie die Ausführung beim Start deaktivieren möchten:

Sudo update-rc.d -f couchpotato entfernen

Um weitere Informationen zu erhalten, gehen Sie wie folgt vor:

man update-rc.d

8
iugamarian

Ich konnte das mitgelieferte init.d-Skript nie zum Laufen bringen. Ich könnte es ganz gut laufen lassen, aber init.d würde couchpotato starten, aber ich könnte mich nie damit verbinden. Ich habe mein eigenes Dirty Script dafür erstellt. Dies sollte funktionieren, vorausgesetzt, Sie verwenden den Pfad ~/.couchpotato für Ihr Installationsverzeichnis.

### BEGIN INIT INFO
# Provides:          CouchPotato application instance
# Required-Start:    $local_fs $network $remote_fs
# Required-Stop:     $local_fs $network $remote_fs
# Should-Start:      $NetworkManager
# Should-Stop:       $NetworkManager
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts instance of CouchPotato
# Description:       starts instance of CouchPotato using start-stop-daemon

### END INIT INFO

USER="youruser"

case "$1" in

  start)
        echo "Starting $DESC"
        /home/micdawg/.couchpotato/CouchPotato.py &
        ;;
  stop)
        echo "Stopping $DESC" 
        PID=`ps -ef | grep CouchPotato.py | grep -v grep | awk '{print $2}'`
        kill -9 $PID 
        ;;

  restart|force-reload)
        echo "Restarting $DESC"
        PID=`ps -ef | grep CouchPotato.py | grep -v grep | awk '{print $2}'`
        kill -9 $PID 
        sleep 15
        /home/micdawg/.couchpotato/CouchPotato.py &
        ;;
  *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac
exit 0
2
Mike

Die akzeptierte Antwort geht davon aus, dass "upstart" verwendet wird, um Prozesse beim Systemstart zu starten. Das ist nicht immer so. Ich verwende Ubuntu 9.04 Minimal, das auf einem virtuellen privaten Server ausgeführt wird, und dies verwendet keinen Upstart.

In diesem Fall müssen Sie update-rc.d ausführen, damit das System die Skripte in /etc/init.d erkennt und ausführt. Dadurch werden symbolische Links zu Ihrem inet.d-Skript an Stellen erstellt, an denen das System nach Anweisungen sucht wenn es hochfährt.

Etwas wie das:

update-rc.d couchpotato defaults 92

Der Wert 92 ist ein sinnvoller Wert für die Priorität und verzögert den Start Ihres Skripts, bis andere wichtige Dinge ausgeführt werden.

Hier sind weitere Details Informationen zum Ausführen von update-rc.d

1
ravenspoint

from the man: Runlevel-Informationen im init.d-Skript LSB-Kommentar-Header wird verwendet (..) Dieser Header muss in init.d-Skripten vorhanden sein. Weitere Informationen zum LSB-Header-Format finden Sie auf der insserv-Handbuchseite.

Beispiel:

### BEGIN INIT INFO
# Provides: Apache2
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop: $local_fs $remote_fs $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# X-Interactive: true
# Short-Description: Start/stop Apache2 web server
### END INIT INFO 
1
aric

Wenn Sie keine Ahnung haben, warum Ihr Dienst beim Booten nicht gestartet wird. Es wird jedoch einwandfrei gestartet, wenn Sie versuchen, es manuell mit dem Befehl service <your service> start zu starten. Versuchen Sie dann, die Standardausgabe und die Fehlerausgabe in eine Datei umzuleiten. Was Ihnen vielleicht einen Anhaltspunkt gibt, warum es nicht losgeht

z.B. in Ihrem Skript

case "$1" in
  start)
    echo "Starting Service "
    <your command to start the service > /tmp/bootservice.log 2>&1
    ;;
  stop)
    echo "Stopping Service "
    <your command to start the service > /tmp/bootservice.log 2>&1
    ;;
  *)
    echo "Usage: /etc/init.d/test {start|stop}"
    exit 1
    ;;
esac

exit 0
1
Pandurang Patil