VDR Watchdog und Restart Problem

  • Hallo Leute,


    ich stehe vor folgendem Problem.


    Ich starte meinen VDR aus meiner runvdr mit -w 60.


    Das soll doch eigentlich bewirken das der VDR, sofern er abstürzt, sich neu starten soll ?


    Ich habe dann noch ein zweites Problem was eventuell auch dazu passt.


    Wenn ich unter Einstellungen auf Neustart gehe...stop mein VDR Prozess, startet aber leider nicht neu.



    Jemand ne Idee ?


    Sytsem ist ein Debian Sarge mit VDR 1.4....selbst compiled.


    Gruß
    Peter

    MAIN: La Scala SST-LC04 Gehäuse / Asus P5N7A-VM / Intel E7500 / YaVDR 0.1 / TT-DVB-S2 / IR-Einschalter Atric / Wakeup-On-Call


    ICH: Bin Microsoft, Cisco, VMware und NetApp zertifiziert

  • -w 60 ist der Watchdog mit 60 sekunden - falls VDR also solange hängt ... Ende Gelände.


    Neustart im Menü beendet den VDR - erst das Startskript, dass den VDR dann wieder anwirft sorgt für den eigentlichen Neustart.


    arghgra

  • Hi,
    Mit welchem Script startet dein vdr?
    Und was steht da drin?


    Gruss Ulf

    Samsung UE43RU7479U, Antec Fusion Black, Prime A320m-k, Ryzen3 3200G, 2* DVB-T2,
    Yavdr-ansible auf Ubuntu Server 22.04

  • Also ich starte den VDR mit einem selbst geschrieben Script.


    Auszug zum starten


    DVBDIR="/usr/src/DVB"
    VDRPRG="/usr/sbin/vdr"
    VDRADM="/etc/vdr/vdradmin-0.96/vdradmind.pl"
    VDRCMD="$VDRPRG -w 60 -d -s /etc/vdr/vdrshutdown -t /dev/tty8 -E /etc/vdr/epg.data -c /etc/vdr -v /video \
    -P'text2skin' \
    -P'burn -i /video' \
    -P'vdrrip' \
    -P'mp3 -m /etc/vdr/mount.sh -n /etc/vdr/network.sh' \
    -P'mplayer -m /etc/vdr/mount.sh -M /etc/vdr/mplayer.sh' \
    -P'weatherng -D /etc/vdr/plugins/weatherng -S /etc/vdr/plugins/weatherng -I /etc/vdr/plugins/weatherng' \
    -P'premiereepg' \
    -P'arghdirector' \
    -P'sysinfo' \
    -P'fussball' \
    "


    VDRUSR=root


    case "$1" in
    start)
    su -c "$VDRCMD" $VDRUSR
    su -c "$VDRADM" #$VDRUSR


    ;;
    stop)
    $KILL $VDRPRG
    $KILL vdradmind.pl


    /etc/init.d/dvb stop
    rmmod dvb_ttpci
    ;;


    Also ist ja toll das der Watchdog nach 60 Sekunden wenn der DVR nicht mehr reagiert killt, aber ich wünsche mir halt nen Neustart ;)

    MAIN: La Scala SST-LC04 Gehäuse / Asus P5N7A-VM / Intel E7500 / YaVDR 0.1 / TT-DVB-S2 / IR-Einschalter Atric / Wakeup-On-Call


    ICH: Bin Microsoft, Cisco, VMware und NetApp zertifiziert

  • Hmm,


    hab das mal kurz mit meinen Pfaden angepasst.


    Ich bringe den VDR zum absturz, aber ein Reload erfolgt nicht.


    Irgendwo muss doch auch eine Überwachung des Prozesses stattfinden ?


    Oder steh ich grad total auf em Schlauch ?

    MAIN: La Scala SST-LC04 Gehäuse / Asus P5N7A-VM / Intel E7500 / YaVDR 0.1 / TT-DVB-S2 / IR-Einschalter Atric / Wakeup-On-Call


    ICH: Bin Microsoft, Cisco, VMware und NetApp zertifiziert

    2 Mal editiert, zuletzt von peda ()

  • Hi,
    unten ist ein link zur runvdr von linvdr da könntest du mal reinschauen.


    Gruss ulf

    Samsung UE43RU7479U, Antec Fusion Black, Prime A320m-k, Ryzen3 3200G, 2* DVB-T2,
    Yavdr-ansible auf Ubuntu Server 22.04

  • Der eigentliche (Neu)start erfolgt von folgender Schleife (Standard runvdr):


    Code
    while (true) do
          $VDRCMD
          if test $? -eq 0 -o $? -eq 2; then exit; fi
          date
          echo "restarting VDR"
          $KILL $VDRPRG
          sleep 10
          (cd $DVBDIR; make rmmod; make insmod)
          date
          done


    Und da die bei Dir nicht drin ist bzw. etwas vergleichbares...

    vdr-2.2.0 + Kernel DVB + dvb-ttpci-01.fw-fb2624 -- Debian 8.2 / linux-3.16.0 - Celeron 2,0 GHz - 1024 MB DDR Ram - 500 GB Western Digital HDD - NEC ND-1300A - 1x DVB-S Rev. 1.6 (4 MB Mod) - 2x TT Budget S-1500 - TBE Extension Board - TechniSat TechniRouter 9/1x8 K (Unicable)
    # nvram-wakeup-1.1 # vdradmind-am-3.6.10 # vdr-fritzbox-1.5.3 # vdr-iptv-2.2.1 # vdr-2.2.0-hide-first-recording-level-v5


    Debian | How To Ask Questions The Smart Way

  • Hab ja oben geschrieben das ich dieses Script genommen habe und meine VDR Pfade angepasst habe.



    Ein Restart erfolgt trotz der while Schleife nicht.


    Wenn ich ein ps -ef mache sehe ich auch keinen aktiven Prozess der Schleife.


    Irgendwo muss doch (aktiv ) abgefragt ob VDR rennt oder nit.

    MAIN: La Scala SST-LC04 Gehäuse / Asus P5N7A-VM / Intel E7500 / YaVDR 0.1 / TT-DVB-S2 / IR-Einschalter Atric / Wakeup-On-Call


    ICH: Bin Microsoft, Cisco, VMware und NetApp zertifiziert

  • if test $? -eq 0 -o $? -eq 2; then exit; fi


    hier wird das doch abgefragt!
    $? ist der errorcode vom letzten Prozess. Les mal aus welchen Errorcode der vdr abgibt wenn du ihn über die interne Funktion "neu startest"
    also echo $? direkt dahinter einbauen. Wenn er 0 oder 2 ist, dann steht da ja auch der normale exit befehl ... und den macht er dann bestimmt auch ;)

    Server: Seagate Dockstar - Debian Squeeze

    Client: Apple TV 2 / Samsung LExxC650

    OldOne: Debian Etch - Matrox G450 & SkyStar2


  • Ist das denn dein Start-Script? Da Startest du den VDR nämlich nicht aus der Schleife. Der Watchdog ist für die Neustartfunktion uninteressant.


    MfG

    vdr-2.2.0 + Kernel DVB + dvb-ttpci-01.fw-fb2624 -- Debian 8.2 / linux-3.16.0 - Celeron 2,0 GHz - 1024 MB DDR Ram - 500 GB Western Digital HDD - NEC ND-1300A - 1x DVB-S Rev. 1.6 (4 MB Mod) - 2x TT Budget S-1500 - TBE Extension Board - TechniSat TechniRouter 9/1x8 K (Unicable)
    # nvram-wakeup-1.1 # vdradmind-am-3.6.10 # vdr-fritzbox-1.5.3 # vdr-iptv-2.2.1 # vdr-2.2.0-hide-first-recording-level-v5


    Debian | How To Ask Questions The Smart Way

  • Nein,


    es ist dieses


    VDRPRG="./vdr"
    VDRCMD="$VDRPRG -w 60 $*"


    LSMOD="`/sbin/lsmod | grep -w '^dvb' | wc -l`"
    KILL="/usr/bin/killall -q -TERM"


    # Detect whether the DVB driver is already loaded
    # and return 0 if it *is* loaded, 1 if not:
    function DriverLoaded()
    {
    return 1
    }


    # Load all DVB driver modules needed for your hardware:
    function LoadDriver()
    {
    :
    }


    # Unload all DVB driver modules loaded in LoadDriver():
    function UnloadDriver()
    {
    :
    }


    # Load driver if it hasn't been loaded already:
    if ! DriverLoaded ; then
    LoadDriver
    fi


    while (true) do
    eval "$VDRCMD"
    if test $? -eq 0 -o $? -eq 2 ; then exit; fi
    echo "`date` reloading DVB driver"
    $KILL $VDRPRG
    sleep 10
    UnloadDriver
    LoadDriver
    echo "`date` restarting VDR"
    done


    Nur das bei


    VDRPRG="./vdr"
    VDRCMD="$VDRPRG -w 60 $*"


    mein Pfad mit /usr/sbin/vdr und die entsprechenden Parameterwie -v -E etc aufgerufen werden.

    MAIN: La Scala SST-LC04 Gehäuse / Asus P5N7A-VM / Intel E7500 / YaVDR 0.1 / TT-DVB-S2 / IR-Einschalter Atric / Wakeup-On-Call


    ICH: Bin Microsoft, Cisco, VMware und NetApp zertifiziert

  • Hab mir jetzt was eigens gebastelt.


    Nicht schön, aber funktioniert ;)

    MAIN: La Scala SST-LC04 Gehäuse / Asus P5N7A-VM / Intel E7500 / YaVDR 0.1 / TT-DVB-S2 / IR-Einschalter Atric / Wakeup-On-Call


    ICH: Bin Microsoft, Cisco, VMware und NetApp zertifiziert

  • Und wie, wenn man fragen darf.

    vdr-2.2.0 + Kernel DVB + dvb-ttpci-01.fw-fb2624 -- Debian 8.2 / linux-3.16.0 - Celeron 2,0 GHz - 1024 MB DDR Ram - 500 GB Western Digital HDD - NEC ND-1300A - 1x DVB-S Rev. 1.6 (4 MB Mod) - 2x TT Budget S-1500 - TBE Extension Board - TechniSat TechniRouter 9/1x8 K (Unicable)
    # nvram-wakeup-1.1 # vdradmind-am-3.6.10 # vdr-fritzbox-1.5.3 # vdr-iptv-2.2.1 # vdr-2.2.0-hide-first-recording-level-v5


    Debian | How To Ask Questions The Smart Way

  • Ich lese die PID vom VDR aus.
    Führe dann ein kill CHLD aus. Wenn die Rückegabe ok ist, passiert nichts, bis auf den Fakt das das Sript 10 Sekunden später wieder ausgeführt wird.


    SOllte es keine PID File geben oder es gibt eine und der Rückgabewert ist falsch, so wird der VDR neu gestartet.


    Das Script überprüft dann wiederrum alle 10 Sekunden wie der Status ist.

    MAIN: La Scala SST-LC04 Gehäuse / Asus P5N7A-VM / Intel E7500 / YaVDR 0.1 / TT-DVB-S2 / IR-Einschalter Atric / Wakeup-On-Call


    ICH: Bin Microsoft, Cisco, VMware und NetApp zertifiziert

  • hi peda,


    hatte das gleiche problem. es liegt daran, dass VDR als daemon gestartet wird. Um in die while-Schleife zu kommen muss aber runvdr laufen.


    Meine Lösung: das -d im VDR-Aufruf entfernen und runvdr mit "runvdr &" in den Hintergrund schicken

Jetzt mitmachen!

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