Während Script ausgeführt wird weiteren Befehl ausführen

  • Hallo Leute. Ich bin neu mit Linux vertraut und dem PI.

    Mich faszinieren die Möglichkeiten an einem PI und jetzt bin ich so begeistert, dass ich kaum davon loslassen kann.

    Ich versuche vergeblich einen Script zu schreiben. Anfangs war es nur eine Schleife, doch nun wollte ich es verschärfen, indem ich die Werte die während seiner Arbeit ausgespuckt werden gefiltert bzw. erkannt und einen weiteren Befehl ausgeführt wird (killall) und dann seine Schleife weiter abarbeitet.

    Anfangs sah es so aus:
    -------------------------------------

    #!/bin/bash

    while [ true ] ; do
    transcode.py -n="Sender 1"
    sleep 10
    done
    -------------------------------------
    #!/bin/bash
    while read ;
    do
    transcode.py -n="Sender 1";
    if
    [ "$Removing connection" = 1 ];
    then
    killall http-launch;
    else
    sleep 10;
    fi
    done
    -------------------------------------

    Jetzt weiss ich nicht mehr weiter und bitte euch um Hilfe.

  • Während Script ausgeführt wird weiteren Befehl ausführen? Schau mal ob du hier fündig wirst!

  • Hallo,

    der Sinn Deiner Rede ist nicht ganz klar.

    Falls Du das willst, was Du im Titel Deiner Anfrage geschrieben hast, dann hilft Dir vielleicht:

    Code
    irgendwer@raspi:#>befehl &


    führt "befehl" im Hintergrund aus, Du kannst auf der Konsole weitere Programme starten.
    Ein

    Code
    irgendwer@raspi#>fg


    holt Hintergrundprozesse ggf. wieder in den Vordergrund.

    Ansonsten: Satzzeichen können Leben retten! ;) (frag mal die Suchmaschine Deines Vertrauens danach)
    Viele Grüße

  • Ich glaskugle einmal und behaupte, der erste Block zwischen den "---" ist dein "erstes" Programm, der zweite Block soll dann die Erweiterung sein.

    Damit Du die Ausgabe von

    Code
    transcode.py -n="Sender 1";

    in BASH weiterverarbeiten kannst, musst Du die Ausgabe einer Variable zuweisen:

    Code
    rueckgabe=$(transcode.py -n="Sender 1")

    Dann steht in

    Code
    $rueckgabe

    die _gesamte_ Ausgabe des Aufrufes drinnen.

    Der Vergleich wird so auch nicht funktionieren, denn selbst wenn die Rückgabe 1 beinhält, steht dann in der IF-Abfrage

    Code
    if [ "1" = 1 ]

    , was dann aber niemals zutreffen wird.

    BTW: Bitte Code-Tags verwenden.

    Anfragen ausserhalb des Forums (Mail o.ä.) werden ignoriert!

    Einmal editiert, zuletzt von digiart (19. Dezember 2016 um 09:55)

  • Tut mir leid wenn ich mich nicht richtig deutlich ausgedrückt habe.
    Ich versuche ausführlicher zu sein. Da ich seit 2 Monaten mich mit diesem Thema befasse, ist das so eine Sache :D

    also wenn ich den Befehl eingebe

    Code
    transcode.py


    dann habe ich als nächstes die Wahl zwischen Sender1 - Sender2 usw. die ich zuvor in einer Config File vor definiert habe.
    Schreibe ich

    Code
    transcode.py -n "Sender 1"


    spare ich mir den einen Schritt.
    Ab und an schmiert er mir ab da die Quelle fehler hat, deshalb habe ich diese loop script geschrieben.

    Bash
    #!/bin/bash
    
    
    while [ true ] ; do
    transcode.py -n="Sender 1"
    sleep 10
    done


    Es gibt aber jetzt einen weiteren Fehler den ich festgestellt habe und der ist, dass die Verbindung unterbrochen wird und sich neu Verbindet. Aber wenn das nur 1 mal passiert hört er nicht auf die Verbindung zu unterbrechen und neu zu verbinden. Da ich das im Cronjob habe sehe ich ja nicht die Ausgabe bzw das was der py ausspuckt.
    Deshalb habe ich mir was zusammengebastelt, was ein wenig fein arbeit braucht.


    PS: der transcode.py startet den http-launch

  • Zunächst mal festgehalten: transcode.py ist nicht wirklich ein Befehl sondern ein Script.

    Wenn das Script abschmiert wäre es besser die Ursache zu finden und zu beheben, als es durch solch ein Loop zu ignorieren.

    Meiner Meinung nach suchst du in der falschen Ecke - auch das zuletzt gezeigte Script ignoriert mögliche Probleme. Deshalb wärs besser wenn du dein transcode.py Script postest mit der dazu gehörigen exakten Fehlermeldung... Dann kann man das ggf besser lösen als durch solch ein bash Gewurschtel.

  • Das Problem ist ich weiss nicht wie ich den py lesen kann. zumal ich das fertig bekommen habe aus dem net. Bitte nicht falsch verstehen mir wäre es auch lieber aber das ist für mich schon eine nummer zu groß :D habe ja jetzt schon probleme es zu verstehen

  • Das das sehr komplex ist hoffe ich, dass wir damit was anfangen können. Ich würde mich trotzdem freuen wenn wir meinen Ansatz irgendwie hinkriegen würden. Aber hier der python script.

    das ist der Rückgabewert

    Code
    root@pi1:~# ./trans1.sh
    Starting to transcode
    Listening on http://127.0.0.1:3000/stream.mkv
    New connection 192.168.178.10:60726
    Starting to stream to 192.168.178.10:60726
    Starting pipeline
    Removing connection 192.168.178.10:60726
    New connection 192.168.178.10:60741
    Starting to stream to 192.168.178.10:60741
    Removing connection 192.168.178.10:60741


    es würde mir reichen wenn nach dem ersten removing http-launch beendet wird weil dieser läuft auch wenn fehlerhaft nach dem ersten verbindungsversuch. Zeitweise schlägt es fehl und zeitweise nicht. Das problem ist, da ich das ganze auch rebooten möchte nach 12 stunden betrieb und das nicht bei 5 Geräten jedes einzelne alle 12 stunden kontrolieren ist das wirklich der einfachste Ansatz für mich. Zumal auch dieses transcodieren sehr komplex ist. Ich weiss es zu schätzen, dass ihr eine saubere lösung eher wollt aber meistens hören die antworten auf wenn es um transcodieren geht warum auch immer. Vermute mal weil sich viele nicht damit auseinander gesetzt haben. Ich hoffe ihr könnt mich verstehen und dabei helfen. Danke jeden für jede auch so kleine Antwort.

    Einmal editiert, zuletzt von gigo1988 (20. Dezember 2016 um 00:40)

  • Keiner da der mir kurz behilflich sein kann? digiart ? Vielleicht kannst du es besser nachvollziehen.
    Ich will nicht die Ursache bekämpfen, da das sonst am anderen ende Platzt. Mir wäre sehr geholfen wenn wir meinen Ansatz versuchen. Ehrlich ich habe so viele seiten durchsucht und immer noch keine Antwort gefunden oder zumindest verstanden und beim testen nicht meinen gewünschten erfolg gehabt. Wenn ihr mir nicht helfen wollt dann sagt es. Was auch immer der Grund sein mag, denn dann brauch ich nicht immer die Seite zu aktualisieren mit der Hoffnung auf eine Antwort :D

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!