enigma2_pre_start.sh

  • Es gibt im aktuellen 3.2.1a Image ja jetzt einen Einstiegspunkt fuer ein eigenes Skript,
    welches VOR dem Start von Enigma2 ausgefuehrt wird (enigma2_pre_start.sh).
    Das ist schonmal sehr praktisch, aber es fehlt noch etwas fuer "danach" (dem Beenden
    von Enigma2).
    Es wuerde zu dem "neuen Weg" passen, wenn man NACH dem Beenden, aber VOR dem
    Runterfahren auch nochmal per Skript sich einklinken koennte.
    In etwa so:


    Code
    ret = $?
    # hook to execute scripts always after enigma2 stop
    if [ -x /usr/bin/enigma2_post_stop.sh ]; then
            /usr/bin/enigma2_post_stop.sh $ret
    fi
    case $ret in


    Ich habe im enigma2.sh eine "EPG-Rettung" eingebaut, die ich bei jedem Update kontrollieren
    bzw. wieder einbauen muss.
    Da wuerden die beiden Skripteinsprungspunkte doch sehr helfen.
    Als Nebeneffekt wuerden auch die "falschen" Patches weniger werden (siehe Thread ueber
    die Shutdown-Probleme).

    DM900 SS, DM8000SSSS
    Kein Support per PN! Nutzt das Forum zum Fragen, dann haben auch andere etwas davon.

  • Eigentlich gehört meines Erachtens nach weder vor noch nach dem enigma2 binary was in der enigma2.sh ausgeführt.


    mit entsprechenden S* und K* scripten kannst du den selben Effekt erreichen und die sind 100% sicher vor überschreiben.


    PS: Wenn ICH mir was wünschen dürfte wäre es die enigma2.sh endlich zu Grabe zu tragen und das enigma2 binary direkt zu starten.

  • Wo wuerde ich denn dann ein K* Skript hinlegen, welches garantiert nach dem
    Beenden von Enigma2 ausgefuehrt wird, es aber sichergestellt waere, dass kein
    anderer Prozess (z.B. autofsd) vorher gestoppt wurde?

    DM900 SS, DM8000SSSS
    Kein Support per PN! Nutzt das Forum zum Fragen, dann haben auch andere etwas davon.

  • cd /etc
    find . | grep K | grep auto
    ./rc0.d/K19autofs
    ./rc1.d/K19autofs
    ./rc6.d/K19autofs


    Dann weist du wo die Kill scripte vom autofs verlinked sind und kannst dich mit entsprechender Nummer plazieren.


    Und wozu runlevel 0,1,6 sind bitte mit der freundlichen Suchmaschine deiner Wahl selber rausfinden.

  • Wo ist bitte der Zusammenhang zwischen Start/Stop-Scripten von enigma und den Start/Stop-Scripten (init-Scripten) von Linux? Werden die Linux init-Scripte denn ausgeführt wenn ich einen GUI restart mache? :confused_face:

    Ich bin keine Hotline, daher kein Support per Mail oder PM.

  • Hi


    Schau Dir mal in der enigma2.sh die verschiedenen Exits an, dann weist auch, wo man was ausführen kann...


    case 1, oder 2 oder watweisich...


    An der angedachten Stelle von oben auf jeden Fall nicht, das ist genau die Stelle, die ghost gekennzeichnet hat, wo man eben KEINE ausführen soll...

  • ...
    An der angedachten Stelle von oben auf jeden Fall nicht, das ist genau die Stelle, die ghost gekennzeichnet hat, wo man eben KEINE ausführen soll...


    Dann hast Du ein Problem mit dem Lesen oder dem Verstehen, was Ghost geschrieben hat.
    Natuerlich kann man GENAU dort zentral ein Skript aufrufen, denn der Returncode von
    Enigma2 ist bereits in der Variablen "ret" gelandet und statt in jeden "case"-Zweig den
    Aufruf eines Skripts zu packen, macht man das davor, da man NACH dem ganzen "case"
    Kram u.U. garnicht mehr sinnvoll reagieren kann. Und damit man IM Skript auch auf den
    Returncode reagieren kann, ist die Uebergabe des Inhalts von "ret" an das Skript in meinem
    Vorschlag enthalten.
    Das Einzige, was man IN seinem Skript nicht machen sollte, waere das Aufrufen von Prozessen,
    die das Ausfuehren der weiteren Befehle im enigma2.sh ver- bzw. behindern. Also immer nur
    schoen brav synchrone Befehle nutzen und sauber zurueckkehren.

    DM900 SS, DM8000SSSS
    Kein Support per PN! Nutzt das Forum zum Fragen, dann haben auch andere etwas davon.

  • Und du glaubst wirklich ernsthaft das sich die Leute daran halten würden - insofern verstehe ich Ghost das er sich das nicht antun will.


    Ausserdem wurde im Originalpost von script beim Runterfahren gesprochen:


    >Es wuerde zu dem "neuen Weg" passen, wenn man NACH dem Beenden, aber VOR dem
    >Runterfahren auch nochmal per Skript sich einklinken koennte.


    Und das geht eben eleganter mit den K* scripten, wobei wenn man da was blockendes reinschreibt ist man trotzdem noch selber Schuld.


    Wenn du beim enigma2 restart was an shellscripts starten willst geht das aber im python genauso gut. Das handeln der return codes im shellscript ist aber nicht wirklich nötig/sinvoll, das enigma2 binary könnte dem init Process auch ganz leicht selbst sagen wenn es runterfahren will. Ausser das es dann nicht so leicht zu debuggen geht weil du runterfahren würdest selbst wenn du es im telnet gestartet hast :smiling_face:


    Aber das hier ist nur meine persönliche Meinung die man nicht teilen muss.


    LG
    gutemine


  • Hubbs - tatsächlich in der Zeile verrutscht - mein Fehler...


    Aber nach dem Beenden von enigma2 und vor dem Herunterfahren würde ich im case für das Herunterfahren machen - weil das die einzige Stelle ist, wo definiert enigma2 beendet ist, aber das Herunterfahren noch nicht ausgelöst.
    Aber das ist bei einer EPG-Sicherung mit Sorge zu sehen - es hatte wohl einen Grund, daß die EPG-Daten bei einem Crash weg sind - von dem Grund kann so mancher E1ler ein Liedchen singen :winking_face:

  • ...
    Aber das ist bei einer EPG-Sicherung mit Sorge zu sehen - es hatte wohl einen Grund, daß die EPG-Daten bei einem Crash weg sind - von dem Grund kann so mancher E1ler ein Liedchen singen :winking_face:


    Du hast dann die Logik dahinter noch nicht verstanden.
    Der EPG wird nur dann gesichert, wenn Enigma2 ihn auch auf die Platte geschrieben hat.
    Somit auch nur, wenn Enigma2 sauber runterfahren konnte.
    Kachelt Enigma2 aber aus irgendeinem Grund ab oder kann den EPG nicht mehr schreiben,
    wird ja auch, mangels Datei auf der Platte, nichts gesichert.
    Es wird aber beim naechsten Start der letzte von Enigma2 gesicherte Stand zurueckgespielt
    und nicht mit einem leeren EPG gestartet.
    Fuer den unwahrscheinlichen Fall, dass es trotzdem ein Problem beim Laden des EPG geben
    sollte, ist in meinem Pre-Start-Skript als erstes eine Abfrage eingebaut, die eine Flagdatei im
    Sicherungsverzeichnis testet. Ist diese neuer als der EPG, wird dieser NICHT kopiert.
    Somit kann ich jederzeit verhindern, dass ein EPG kopiert wird, wenn noetig.


    @gutemine
    Wie Du ja selbst erkannt hast, wird niemand davon abgehalten in K-Skripts Mist zu bauen.
    Wieso es dann ein Problem sein soll, wenn man den Leuten schonmal die richtige Stelle zum
    Einsprung vorgibt, erschliesst sich mir nicht. Es wuerden alle die Faelle abgefangen, in denen
    ein "korrekter" Code an der falschen Stelle Probleme verursacht, wie es ja im Fall, den Ghost
    beim "Shutdown-Problem" analysiert hatte, geschehen war.
    "Falscher" Code verursacht natuerlich auch an der richtigen Stelle Probleme, aber den wird
    man niemals verhindern koennen, da sorgt schon die Phantasie der User dafuer. :winking_face:
    Aus meiner Sicht: eine moegliche Fehlerquelle weniger fuer die Dappese unter uns, das Ganze
    zum Erliegen zu bringen.


    Letztes Argument von meiner Seite:
    Rauszufinden, dass Enigma2 mittels dem Skript enigma2.sh gestartet wird, ist relativ einfach.
    Den Zusammenhang mit Runleveln und den K-Skripten in den jeweiligen init.d-Verzeichnissen
    herauszufinden ist nicht mehr ganz so offensichtlich (fuer Unix-Erfahrene natuerlich schon).
    Den Leuten "Hilfestellung" fuer eigene Skript-Erweiterungen im Rahmen des Enigma2-Skripts
    zu geben, sehe ich daher als "pragmatische Supportminimierung" an und nicht als Versuch,
    den "Software-Designpreis" zu gewinnen. :winking_face:

    DM900 SS, DM8000SSSS
    Kein Support per PN! Nutzt das Forum zum Fragen, dann haben auch andere etwas davon.