externremux.sh / Ubuntu / bash / mencoder beendet sich nicht

  • Hallo,


    Ich habe das Problem, dass der mencoder Prozess nicht beendet wird, wenn ich den Stream beende. Ich habe da jetzt ganze Weile recherchiert und meine der Sache nahe gekommen zu sein:
    Laut Wiki muss für externremux.sh in der ersten Zeile /bin/sh durch /bin/bash ersetzt werden. Das ist auch nötig, denn sonst läuft gar kein Stream unter Ubuntu.


    Jetzt habe ich in einem anderen Thread gelesen, dass im source des streamdev fix "bin/sh" verwendet wird, beim beenden des remux-Vorgang.

    Code
    ~/streamdev/vdr-plugin-streamdev-0.6.1.git20131129/remux# grep /sh extern.c
                    if (execle("/bin/sh", "sh", "-c", opt_remux, NULL, env) == -1) {


    Also statt Ändern des Skriptes, den Default in ubuntu umstellen?
    dpkg-reconfigure dash und Nein wählen (ändert den Link von /bin/sh --> /bin/dash nach /bin/bash).
    Hilft auch nicht.


    Sehr komisch:
    nach einem /bin/bash an der Kommandozeile lächelt mich weiterhin die sh an:

    Code
    root@homeserver:/var/lib/vdr/plugins/streamdev-server# /bin/sh
    sh-4.2#  ls -la /bin/sh
    lrwxrwxrwx 1 root root 9 Apr 13 08:31 /bin/sh -> /bin/bash
    sh-4.2#  ls -la /bin/bash
    -rwxr-xr-x 1 root root 959120 Mär 28  2013 /bin/bash


    Erstens: Wie kann das sein?
    Und zweitens: Wie bekomme ich die mencoder Prozesse automatisch beendet?


    Gruß,
    Hendrik

  • Hallo,


    Welche externremux.sh verwendest Du? Hört sich nicht nach der "Original-Version" an. Bei der Variante, die mit streamdev ausgeliefert wird, steht schon seit vielen Jahren /bin/bash am Anfang. Dort sollte auch der folgende trap-Befehl dafür sorgen, dass alles sauber beendet und aufgeräumt wird:

    Code
    trap "trap '' EXIT HUP INT TERM ABRT PIPE CHLD; kill -INT 0; sleep 1; fuser -k '$FIFO'; rm '$FIFO'" EXIT HUP INT TERM ABRT PIPE CHLD


    Sollte Deine externremux.sh diesen Trap-Befehl verwenden, wäre interessant, welche Prozesse weiterlaufen und ob die FIFO-Datei noch existiert.


    Dass /bin/sh ein Link auf z.B. /bin/bash ist, ist normal. Standard bei Ubuntu ist/war ein Link auf /bin/dash.


    Letzlich sollte egal sein, unter welcher Shell Streamdev das Remux-Skript startet, solange am Beginn des Skripts /bin/bash steht. Dann müsste auch die dash das Skript durch die bash ausführen lassen. Wenn in Deinem System /bin/sh ohnehin auf /bin/bash verlinkt, ist das erst recht kein Thema.


    Viele Grüße,
    Frank

  • Hallo,



    Welche externremux.sh verwendest Du? Hört sich nicht nach der "Original-Version" an. Bei der Variante, die mit streamdev ausgeliefert wird, steht schon seit vielen Jahren /bin/bash am Anfang. Dort sollte auch der folgende trap-Befehl dafür sorgen, dass alles sauber beendet und aufgeräumt wird:


    das Script aus dem Sources "streamdev-server/externremux.sh" funktioniert und Prozess mencoder wird auch beendet.
    Bekannter der Yavdr einsetzt hatte auch das Script aus dem WIki verwendet, da bei Yavdr kein externremux.sh nach
    "/var/lib/vdr/plugins/streamdev-server" installiert wird.Bei Yavdr befindet sich das Script in "/usr/share/doc/vdr-plugin-streamdev-server/examples/"
    auspacken und nach "/var/lib/vdr/plugins/streamdev-server" kopieren, Streamdev erwartet das Script in diesem Verzeichnis. ..oder Plugin mit Parameter
    "-r /pfad/zum/sript/" starten.


    Gruss
    Wolfgang

    TT S2-6400 - saa716x kompilieren unter 20.04(Focal)

Jetzt mitmachen!

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