Noad "Kill-addon" für Shutdown-hook

  • Hallo,


    wegen den bestehenden Noad-Probleme (hängen bleiben von Noad) basierend auf der Idee von SHO Skript (siehe http://www.vdr-portal.de/board/profile.php?userid=13369), vagabundierende Noad-Instanzen, die keine Aufnahme als Referenz mehr haben, beim shutdown zu töten, hab ich ein weiteres kleines Skript gebastelt.



    Der "vdr-hangcheck-Patch" behebt dieses Problem zwar prinzipiell auch (da ist dann ein 30-Minuten-Timeout drin, der noad 30 min nach Ende der Aufnahme killt", allerdings muss man dazu den VDR patchen (siehe hier: Noad 0.6.0 patchen? )


    Die Idee den Shutdown-hook das Problem erledigen zu lassen ist daher sehr vergleichba, wobei das Ende der Aufnahme natürlich nicht bekannt ist , daher sollte der Zeitpuffer groß genug sein, den Noad zum verrichten seiner Arbeit hat.


    Das Skript gehört in die "S50.noad" unter "/usr/share/vdr/shutdown-hooks/"


    Alternativ könnte man Skript natürlich auch alleine alle paar Stunden laufen lassen (als cornjob) um hängende Noads zu entfernen...



    Was tut das Skrip?


    Das Skript durchsucht die Prozessliste und killt Noad-Instanzen, welche vor mehr als 5 Stunden gestartet wurden. Nach 5h sollten die meisten noad-Prozesse durchlaufen sein...



    Ich hoffe ich hab da keine Fehler gescriptet und bitte um Tests.


    Verbesserungsvorschläge sind auch immer gerne genommen...

    Server: Hardware: Intel DH77KC, Celeron G1610, 8GB RAM, 2x 5TB HDD, 2x WD 1,9TB HDD; 1x 64 GB SSD (root), System Ubuntu 18.4 / YaVDR ansible headless
    Client: Hardware: Lenovo Q150 (nur Netzwerk, 1GB RAM, ohne DVB-Karte, Igor-USB-Empfänger) System: Ubuntu 18.4 / YaVDR ansible

    8 Mal editiert, zuletzt von Negge ()

  • Gelöscht... ;)

    Hardware: Antec NSK2480, Asus P8B75-M LX, Intel Core i5-3570T, 4 GB RAM, NVIDIA GT610, TT-Premium S2-6400, 128 GB SSD, 14 TB HDD, Pioneer BDR-207EBK
    Software: Ubuntu 22.04 LTS mit Kernel 6.5 und VDR 2.6.7 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, screenshot, skinenigmang, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

    5 Mal editiert, zuletzt von shofmann ()

  • Wegen Problemen beim Editieren meines letzten Postings:


    Hi Negge,bei der Durchsicht deines Skripts ist mir aufgefallen, dass etime_days leer bleibt, wenn der Prozess noch keine 24 Stunden gelaufen ist. Das ergibt dann bei der if-Abfrage eine Fehlermeldung ([: -gt: unary operator expected). Die if-Abfrage sollte also besser zunächst die Gültigkeit dieses Wertes prüfen:


    if [ $etime_days ] && [ $etime_days -gt 0 ]


    Ohne dies weiter praktisch erprobt zu haben, meine ich, dass die Extraktion der Stunden, Minuten und Sekunden fehlschlägt, sobald etime einen Tageswert enthält. Nachdem du die Tage aber sowieso getrennt prüfst, ist dies in diesem Fall unkritisch. Anders natürlich, wenn man die Zahl der Minuten zum Beenden eines Prozesses heranziehen möchte; eine Genauigkeit auf Stundenbasis mag Manchem vielleicht zu grob gerastert sein. ?(


    Die Option "-ww" im ps-Befehl habe ich ebenfalls entfernt. Man braucht sie auch nicht, weil die überlang lange Kommandozeile ja nicht mehr ausgegeben werden soll. ;)

    Hardware: Antec NSK2480, Asus P8B75-M LX, Intel Core i5-3570T, 4 GB RAM, NVIDIA GT610, TT-Premium S2-6400, 128 GB SSD, 14 TB HDD, Pioneer BDR-207EBK
    Software: Ubuntu 22.04 LTS mit Kernel 6.5 und VDR 2.6.7 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, screenshot, skinenigmang, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

  • Danke für den Tipp.


    Ich hab das mein eingepflegt in den Patch.


    Falls jemand noad schon früher töten möchte, z.b. wenn es länger als z.B. 20 minuten läüft, hab ich hier noch das passende Skript. Das macht aber nur Sinn, wenn Noad erst nach Ende der Aufnahme gestartet wird.
    Beim "live-scan" läuft Noad natülich immer mindestens solange, wie die Aufnahme auch lang ist (was ja häufig mehr als 20 min sind).


    Schönen Gruß
    Negge


    Server: Hardware: Intel DH77KC, Celeron G1610, 8GB RAM, 2x 5TB HDD, 2x WD 1,9TB HDD; 1x 64 GB SSD (root), System Ubuntu 18.4 / YaVDR ansible headless
    Client: Hardware: Lenovo Q150 (nur Netzwerk, 1GB RAM, ohne DVB-Karte, Igor-USB-Empfänger) System: Ubuntu 18.4 / YaVDR ansible

  • hi Leute,
    dieser Thread ist ja schon ein bisschen aelter, trotzdem ist mir ein kleines Problem aufgefallen: (ich benutze den ct-vdr (5 oder 6 ??) )


    ist der noad-Prozess noch nicht alt genug, dann ist etime lediglich im Format mm:ss und so wie mit cut geschnitten wird, steht dann in $etime_hours die Minuten-Anzahl ... und die kann ziemlich hoch sein, so dass im Zeitraum zwischen 5 und 59 Minuten noad gekillt würde.


    ich habe nun erstmal in die else-if-Abfrage ein "[ $etime_sec ] && " eingefuegt ... und nun scheint auch das zu gehen, aber wirklich elegant ist das ja nicht.


    Gibt es nicht die Möglichkeit die etime-Ausgabe irgendwie immer korrekt den Variablen zuzuweisen?


    mfG,
    aeppel

  • Stimmt, guter Hinweis, war mir bisher gar nicht aufgefallen.


    Vielleicht sollte man das in die Zeitangabenanalyse einfügen, so dass die richtigen Daten in der richtigen Variable landen...


    Evetuell in der Richtung ob 2 ":" oder nur 1 ":" bei der e-time-Ausgabe kommen?!?

    Server: Hardware: Intel DH77KC, Celeron G1610, 8GB RAM, 2x 5TB HDD, 2x WD 1,9TB HDD; 1x 64 GB SSD (root), System Ubuntu 18.4 / YaVDR ansible headless
    Client: Hardware: Lenovo Q150 (nur Netzwerk, 1GB RAM, ohne DVB-Karte, Igor-USB-Empfänger) System: Ubuntu 18.4 / YaVDR ansible

    Einmal editiert, zuletzt von Negge ()

Jetzt mitmachen!

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