runvdr in die rc.d ? mit start stop restart

  • Ich hoffe ein Linux-Gewandter kann mir etwas bei meiner runvdr unter die Arme greifen.


    Das Problem ist, dass wenn vdr hängen bleibt bzw. abstürzt, dass vdr dann nicht wieder neu gestartet wird.


    Ausserdem würde ich dieses runvdr-script gerne als dienst sehen und es einfach bei jedem systemstart mitstarten lassen.


    Meine derzeitige runvdr sieht folgendermassen aus.



    Was da auch noch fehlt sind die start, stop und restart sprungpunkte.


    Oder hätte mir bitte jemand ein gutes Bespiel für ne runvdr, da die runvdr-beispieldatei, die es hier bei vdrportal im downloadbereich gibt, leider nicht zu bekommen ist (Not Found). ?

    Software: Ubuntu 10.04 - VDR 1.7.14 + Xineliboutput (VDPAU) + XBMC
    Hardware: NEXUS-S - SkyStar2 - Nova-S2 - Nividia 8600GT

  • vdradmin und LCDd würde ich über eigene Scripte starten lassen, damit man sie auch unabhängig neu starten kann.


    Du könntest mein watchvdr (Link ist auf obiger Wiki Seite) verwenden und nach /usr/local/sbin/ packen. Das ist bereits auf die Start/Stop Funktion vorbereitet.


    Dann folgendes kleines Script nach /etc/rc.d/vdr (oder wo die Scripte bei dir auch liegen ...):



    Und zum Laden der Module noch ein kleines Script /usr/local/sbin/dvbmodules anlegen:



    watchvdr kann zwar auch selber Module laden, aber benutzt dafür modprobe, so dass die Module unter /lib/modules/$KERNELVERSION liegen müssen.


    (Alles übrigens ungetestet gerade so runtergeschrieben, zumindest vom Prinzip her geht's aber so ;D )

  • Also nochmal vielen Dank, das hat wirklich super gut geklappt mit euren Tips.
    Aber ein kleines Problem hab ich noch: Das LCD zeigt abwechselnd das an was es soll und dann wieder Welcome to VDR, dann wieder was es soll (sender info's), dann wieder Welcome to VDR etc.
    Es scheint mir als würde irgend etwas, das mit dem LCD zu tun hat immer wieder erneut initialisiert werden.


    Den LCDd starte ich jetzt damit: (/etc/rc.d/init.d/lcdd)


    #!/bin/sh
    #
    # Tags for Red Hat init configuration tools
    # Provides: vdr
    # chkconfig: 35 90 90
    # Description: LCDd LCD-Daemon für (Palm)-LCD an VDR


    case "$1" in
    start)
    echo "Starte LCDd ..."
    /usr/local/sbin/LCDd -d curses > /dev/tty9 & >&2
    ;;
    stop)
    echo "Beende LCDd ..."
    killall -9 LCDd >&2
    sleep 5
    ;;
    restart)
    $0 stop
    sleep 2
    $0 start
    ;;
    *)
    echo "Usage: $0 {start|stop|restart}" >&2
    exit 1
    ;;
    esac



    ----------------------------
    Den VDR mit dem: (/etc/rc.d/init.d/vdr)


    #!/bin/sh
    #
    # Tags for Red Hat init configuration tools
    # Provides: vdr
    # chkconfig: 35 90 90
    # Description: VDR VideoDiscRecorder
    rmmod keybdev
    PIDFILE="/var/run/watchvdr.pid"
    case "$1" in
    start)
    echo "Starte VDR ..."
    /usr/local/bin/watchvdr -u root -d -p "$PIDFILE" -x /usr/local/bin/dvbmodules -- -w 60 \
    -t /dev/tty8 -r /etc/vdr/vdrconvert/nq.sh -L /video/PLUGINS -c /video $* \
    -P remote -P games -P pilot -P lcdproc -P beep -P sleeptimer -P streamdev-server -P vdrrip \
    -P 'osdteletext -r' -P'vcd --vcd=/dev/cdrom' -P femon -P"mplayer --mplayer=/video/plugins/mplayer.sh" -P mp3 \
    -P tvonscreen -P pim -P screenshot -P calc -P autotimeredit -P"dvd -C/mnt/dvd" -P dvdselect -P lcdproc
    ;;
    stop)
    if [ -f "$PIDFILE" ] ; then
    echo "Beende VDR ..."
    kill $(cat "$PIDFILE")
    sleep 5
    fi
    ;;
    restart)
    $0 stop
    sleep 1
    $0 start
    ;;
    reload)
    test -f "$PIDFILE" && kill -HUP $(cat "$PIDFILE")
    ;;
    *)
    echo "Usage: $0 {start|stop|restart|reload}" >&2
    exit 1
    ;;
    esac




    ----------------------------------------


    Den vdradmin hiermit: (/etc/rc.d/init.d/vdr)


    #!/bin/sh
    #
    # Tags for Red Hat init configuration tools
    # Provides: vdradmin
    # chkconfig: 35 90 90
    # Description: vdradmind.pl Server auf Port 8001 für VDR


    case "$1" in
    start)
    echo "Starte vdradmin ..."
    /usr/local/bin/vdradmindstart.sh &
    ;;
    stop)
    echo "Beende vdradmin ..."
    killall vdradmind.pl
    sleep 5
    ;;
    restart)
    $0 stop
    sleep 2
    $0 start
    ;;
    *)
    echo "Usage: $0 {start|stop|restart}" >&2
    exit 1
    ;;
    esac


    --------------------------------


    Damit wird /usr/local/bin/vdradmindstart.sh aufgerufen, in der folgendes steht:


    #!/bin/sh
    sleep 30
    /usr/local/src/vdradmin/vdradmind.pl -nf &



    ----------------------------------


    Das mit dem sleep 30 musste ich so machen, damit vdradmin nicht vor dem vdr schon startet, was ja sonst zu unangenehmen "verzögerungen" führt.


    übrigens, das mit dem


    # Tags for Red Hat init configuration tools
    # Provides: vdradmin
    # chkconfig: 35 90 90


    in jedem Script, das muss offenbar sein, bei RedHat.
    man muss dann auch
    chkconfig --add vdr (oder vdradmin) etc.
    machen, damit der neue Dienst auch sichtbar wird. Ohne die obigen Tags for Red Hat klappt sonst chkconfig nicht.



    Aber was könnte die Ursache dafür sein, dass mir das LCD immer wieder den Welcome to VDR zeigt ? Vorher liefs doch auch ?(

    Software: Ubuntu 10.04 - VDR 1.7.14 + Xineliboutput (VDPAU) + XBMC
    Hardware: NEXUS-S - SkyStar2 - Nova-S2 - Nividia 8600GT

  • Zitat

    Original von Unimatrix0
    Also nochmal vielen Dank, das hat wirklich super gut geklappt mit euren Tips.


    Prima :)


    Zitat

    Aber ein kleines Problem hab ich noch: Das LCD zeigt abwechselnd das an was es soll und dann wieder Welcome to VDR, dann wieder was es soll (sender info's), dann wieder Welcome to VDR etc.


    Hmm, mit LCDd kann ich Dir wohl leider nicht weiterhelfen, den kenne ich nicht, aber ...




    Der LCDd Aufruf sieht etwas "seltsam" aus. In Deinem ursprünglichem Script wurde der mit LCDd -d curses > /dev/tty9 gestartet. Hier lässt Du ihn von der Shell im Hintergrund starten ("&") und leitest anschliessend noch STDOUT nach STDERR um, obwohl es zuvor (und im alten Script) schon nach /dev/tty9 umgeleitet wurde?!


    Ausserdem solltest Du, wenn möglich, das "-9" beim killall rausnehmen. Das beendet den Prozess, ohne ihm eine Chance zu geben sich selber "sauber" zu beenden und sollte nur verwendet werden, wenn es nicht anders geht. Standardmäßig wird SIGTERM = "-15" gesendet.



    Nimm da mal das "$*" aus der Parameterliste. "$*" bedeutet: "alle Parameter, die das Script übergeben bekommen hat", d.h. also bei diesem Script "start". Das hat aber beim VDR Aufruf nichts zu suchen ... (oder man muss zumindest mit einem "shift" den ersten Parameter, also das "start", entfernen)

  • Hab den Fehler jetzt gefunden, der war natürlich wiedermal im Layer 8, also bei mir selber zu suchen. Habe 2 x das lcdproc plugin eingetragen *schäm*. Anscheinend wollten die sich die Arbeit teilen...und kämpften jeweils darum...oder so ähnlich.


    Dein Tip das -9 bei killall und zu entfernen hab ich beherzigt und %* in der parameterliste hab ich ebenfalls weg gemacht.


    LCDd starte ich nun mit LCDd -d curses > /dev/tty9 &


    wobei ich auf das & nicht verzichten kann, sonst fährt mir RedHat beim Systemstart nur bis zum Dienst LCDd hoch und dann ist fertig.
    Dann muss ich mit Knoppix booten und den Fehler beheben (jedenfalls kenn ich keinen anderen Weg)


    Aber super jetzt gefällt's mir! Und ab zum nächsten Problem...da stimmt glaub ich die Auflösung nicht ganz, wenn ich mit vdrconvert eine dvd erzeugen lasse. Aber dazu werd ich wohl besser einen neues Thema starten.


    Und noch etwas, ich glaube das kann man nicht oft genug sagen: Nämlich, wie super ich VDR, dieses Board und die Leute finde, die dies alles ermöglichen und einem mit Rat zur Seite stehen! :respekt und Danke Euch allen!


    :fans

    Software: Ubuntu 10.04 - VDR 1.7.14 + Xineliboutput (VDPAU) + XBMC
    Hardware: NEXUS-S - SkyStar2 - Nova-S2 - Nividia 8600GT

  • Also das hat bisher ja alles wunderbar funktioniert. Nun hab ich seit neuestem eine Skystar2 und muss, wie ich das verstanden habe jetzt die treiber version 1.1.1 nehmen.


    Mein Problem ist nun, dass einige Dinge an den bisherigen Scripts abgeändert werden mussten und es seither nur noch "manuell" geht.


    Ich starte den VDR ja aus der /etc/rc.d/init.d aus einem script heraus.
    Das sieht so aus:


    Wie ich das verstehe ruft watchvdr erst mal den treiber via script


    /usr/local/bin/dvbmodules


    auf.


    Vorher (also mit dem Treiber linux-dvb.2003-11-08) sah /usr/local/bin/dvbmodules so aus:




    Dieses hab ich wie folgt abgeändert:



    Wenn ich nun den Dienst "vdr" mittels /sbin/service vdr start starten will, wie sonst auch, dann bricht er gleich wieder ab (watchdog stellt fest dass kurz hintereinander vdr 2x geladen wurde und beendet). Habe herausgefunden warum das starten nicht klappt.
    Die Treiber werden nicht geladen.


    Aber wenn ich auf der Konsole die Treiber manuell mit /usr/local/bin/dvbmodules lade und dann erst den vdr entweder manuell oder mittels script starte, dann funktioniert alles so wie es soll.


    Ich komme nicht dahinter warum es von "Hand" geht und via script im /etc/rc.d/init.d einfach nicht. Sieht von Euch ev. jemand den Fehler ? Bin ja immernoch Newbie, kann gut sein, dass ich was mit den Rechten nicht beachtet habe, aber was ?


    übrigens klappt es auch, wenn ich die ganze watchvdr-zeile in die konsole übernehme es ist mir daher enorm unklar woran es liegen könnte. (ausser dass ich in der konsole mit root (su -) arbeite). Habe aber dire Rechte geprüft von dem Script dvbmodules es sollte von jedermann ausgeführt werden können.

    Software: Ubuntu 10.04 - VDR 1.7.14 + Xineliboutput (VDPAU) + XBMC
    Hardware: NEXUS-S - SkyStar2 - Nova-S2 - Nividia 8600GT

  • Ich weiss ja nicht, wie das insmod.sh aussieht ... vielleicht setzt es voraus, dass "$DVBDIR" das aktuelle Verzeichnis ist?


    Wenn ja, dann ändere die Zeile in dvbmodules ab in:


    Code
    ( cd "$DVBDIR" && ./insmod.sh load )


    und analog für unload.


    Ansonsten entferne mal den "-d" Parameter für watchvdr aus dem /etc/rc.d/init.d Script, dann startet watchvdr im Vordergrund und man sollte eventuelle Fehlermeldungen des anderen Scripts sehen.

  • Mensch ich hab mich jetzt lange devor gedrückt, das nochmal anzugehen!
    (vileicht auch weil ich noch ne Dreambox am 2. Strang hatte :schiel )


    Greywolf:
    Danke vielmals! Sorry für mein spätes Feedback. Dein Tip war goldrichtig! :]

    Software: Ubuntu 10.04 - VDR 1.7.14 + Xineliboutput (VDPAU) + XBMC
    Hardware: NEXUS-S - SkyStar2 - Nova-S2 - Nividia 8600GT

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!