mal neben "Compilerfehler"

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo.

    Können wir uns mal bitte um mein allgem. Verständnis Kümmern?

    Es geht um den Thread "Compilerfehler", ich möchte dies hier aber nicht dor einbrigen, denn es bläht dort nur auf.

    Ich habe das Script "Überwachungskamera" mal auf wenige Zeilen reduziert und hätte gerne von Euch einige Fragen dazu beantwortet.

    Das ist ein bash-Script, wie hier festgestellt wurde, nach Zeile 1
    Dann kommen ein paar Zeilen die mit groß geschriebenen Bezeichnungen anfangen = Variable, richtig?
    set -x ist ein debug-Befehl und printet Kommandos und Argumente - sofern ausgeführt.
    DATE, eine Variable die mit dem (amer.) Datum gefüllt wird, bis hierhin sollte eigentlich meinem Verständnis nach alles fehlerfrei ausgeführt werdren, ja?
    Hm, ich versuchs mal: die Variable VIDEOFILE sollte gefüllt werden mit VIDEODIR, also "/home/pi/security-camera" & /video/ & <Datum>.h264, also

    /home/pi/security-camera/video/2014_09._14_58_24.h246. (jetzt mal nicht an den Datumstrennern stören, ich weiß nicht wie die dann wirklich aussehen).

    dann kommt eine kurze Pause (1 sek?)
    mit screen kann ich noch nicht wirklich was anfangen, aber hier soll ein Video geschrieben werden mit den Parametern, wobei ich alles was mit "-" anfängt nicht wirklich interpretieren kann.

    Soweit sollte es so sein, ja?

    nun kleine Abschweifung: das Script muss gestartet werden. Die simpelste Möglichlichkeit

    Code
    /home/pi/security-camera/record_test.sh


    geht nicht, das leuchtet mir ein, ist klar, die Ausführungsberechtigung fehlt. Also, wie Jan vorschlägt, ein sudo davor:

    Code
    pi@raspberrypi ~ $ sudo /home/pi/security-camera/record_test.sh
    sudo: /home/pi/security-camera/record_test.sh: command not found
    pi@raspberrypi ~ $

    command not found??? Sorry, verstehe ich nicht, das Script ist doch da. Nun soll es ja auch die Möglichkeit geben mit sh (hm, wird von euch wohl abgelehnt, da 1. Zeile ...bash) oder mit bash (doppelt gemoppelt??) zu starten:


    Na ja, Datum (DATE) ist ok, VIDEOFILE, da fehlt m.E. DATE vor .246.
    sleep not found??? Hm. screen auch nicht...


    Datum gefunden, Rest, hm...

    Jetzt wäre eine Erklärung hilfreich, was ist der Unterschied zwischen sudo- und bash-Start und warum werden offensichtlich doch vorhandene Kommandos nicht gefunden? Warum wird in der VIDEO-Zeile/Variable das Datum nicht ergänzt? Jamand hat mal geschrieben, dass der "." evtl. falsch sei, aber das Originalfile - und dieses hier ist ja ein Teil davon - läuft doch bei vielen anderen?

    Jetzt haben wir 2 Baustellen....

    Viele Grüße, Charly

    Einmal editiert, zuletzt von karomue (10. September 2014 um 15:27)

  • Dann kommen ein paar Zeilen die mit groß geschriebenen Bezeichnungen anfangen = Variable, richtig?

    Ja.
    Alles was mit bla=blub geschrieben ist, stellt eine Variable dar, in meinem Beispiel wäre bla der Name der Variable mit dem Inhalt blub
    Die kann man dann später abrufen in dem man den Variablen-Namen mit vorrangestelltem $ aufruft also $bla was dann blub ausgeben würde ;)


    Hm, ich versuchs mal: die Variable VIDEOFILE sollte gefüllt werden mit VIDEODIR, also "/home/pi/security-camera" & /video/ & <Datum>.h264, also

    /home/pi/security-camera/video/2014_09._14_58_24.h246. (jetzt mal nicht an den Datumstrennern stören, ich weiß nicht wie die dann wirklich aussehen).

    Richtig.

    dann kommt eine kurze Pause (1 sek?)

    Ja.

    mit screen kann ich noch nicht wirklich was anfangen, aber hier soll ein Video geschrieben werden mit den Parametern, wobei ich alles was mit "-" anfängt nicht wirklich interpretieren kann.

    Screen sorgt dafür dass eine Sitzung gehalten wird obwohl man sich selber abmeldet. Es kann zwar auch noch mehr, aber das ist die hier angestrebte Funktion :)
    Die Programme die mit screen gestartet wurde laufen dann im Hintergrund.. Man kann sich im nachhinein auf diese Sitzung auch wieder verbinden und gucken was das Programm ausgegeben hat..

    Alles mit " - " stellt ein Paramter bzw eine Option für das Programm raspivid dar. Typisch für Linux ist dass man eine Liste mit möglichen Option und dessen Wirkung mithilfe --help aufgelistet kriegt: raspivid --help

    Die Zeile mit screen sorgt also dafür dass eine Sitzung namens VideoRecord gestartet wird und dadrin wird raspivid ausgeführt.



    nun kleine Abschweifung: das Script muss gestartet werden. Die simpelste Möglichlichkeit

    Code
    /home/pi/security-camera/record_test.sh


    geht nicht, das leuchtet mir ein, ist klar, die Ausführungsberechtigung fehlt. Also, wie Jan vorschlägt, ein sudo davor:

    Code
    pi@raspberrypi ~ $ sudo /home/pi/security-camera/record_test.sh
    sudo: /home/pi/security-camera/record_test.sh: command not found
    pi@raspberrypi ~ $

    command not found??? Sorry, verstehe ich nicht, das Script ist doch da.

    Naja da hast du leider etwas falsch verstanden oder durcheinander gebracht.
    sudo ermöglicht das nachfolgende unter einem anderen Benutzer auszuführen, also als Administrator bzw root.

    Zunächst mal handelt es sich bei record_test.sh nach dem erstellen um eine normale Datei mit Text drinnen. Damit der sog. Shebang, also die erste Zeile ganz oben mit #!/bin/bash , beachtet wird muss die Datei Ausführungsrechte haben. Das erreicht man mithilfe des Befehls chmod - allgemein alle Dateirechte kann man mit chmod verändern, auch Leserechte usw.. Siehe dazu >> hier << und >> hier <<.
    Nachdem die Datei ausführ-Rechte hat kann man diese direkt ausführen: chmod +x /home/pi/security-camera/record_test.sh

    Eine weitere Möglichkeit wäre die Datei direkt an den Interpreter zu übergeben, also das Programm was den Code verarbeiten soll. Das hast du nachfolgend versucht:


    Nun soll es ja auch die Möglichkeit geben mit sh (hm, wird von euch wohl abgelehnt, da 1. Zeile ...bash) oder mit bash (doppelt gemoppelt??) zu starten:


    Na ja, Datum (DATE) ist ok, VIDEOFILE, da fehlt m.E. DATE vor .246.
    sleep not found??? Hm. screen auch nicht...

    Hier ist leider wieder ein kleiner Fehler drin. sh ist etwas anderes als bash ... erinnerst du dich noch aus dem anderen Thread? ;)
    sh ist älter als bash , kann also nicht den Umfang dessen was bash kann.
    Wenn der Code explizit für bash geschrieben wurde müsstest du den auch damit ausführen, und das ist hier der Fall.

    Warum allerdings die Befehle wie sleep oder screen nicht gefunden werden kann man hier noch nicht eindeutig erkennen - aber ich vermute das wird im kommenden Abschnitt klarer:

    Hier sieht man eine ganze menge Zeichen die da nicht hin gehören und zu dem "command not found" führen.
    Das gehöre da nicht hin:

    Code
    $'\302\240\302\240\302\240\302\240

    usw

    Wo die her kommen kann ich jetzt nur vermuten: Fehlerhaftes Encoding.

    Übertrag mal bitte die angehängte record.sh aus >diesem< Beitrag und übertrage diese mithilfe von WinSCP auf den PI. Bitte nicht öffnen und nix ändern, einfach direkt ausführen. Damit sichergestellt bleibt das du die Datei nicht unbewusst veränderst und wir langsam mal voran kommen mit dieser Problematik.

  • Ich finde äußerst amüsant, dass das Forenranking "Junior" unter karomue setzt. Das ist absolut nicht böse gemeint, ist nur gerade aufgefallen :lol:
    Falls Du irgendwie im Nordosten unserer schönen Republik wohnst poste mir das mal. Ich habe kommende Woche Urlaub und wollte mich sowieso ganz dem RasPi widmen, vielleicht könnte man ja mal einen kurzen Workshop veranstalten :thumbs1: Ansonsten kann ich nächste Woche auch etwas intensiver mitspielen.

  • <lach>

    Dann wünsche ich erstmal einen schönen Urlaub.

    Und um mein Profil sollte ich mich auch mal kümmern, habe ich dort nicht schon "Freiburg" hinterlegt?

    Ich denke, da kommen wir leider so schlecht zusammen, Dabel ist doch schon eine Ecke weg...

    Viele Grüße, Charly

  • Im Profil stand nichts, da hatte ich zuerst nachgeschaut. Freiburg ist dann doch etwas weit. Aber Du bist ja auch schon weiter gekommen. Und so gehts Schritt für Schritt voran. Das Du immer alles aufbauen musst ist nicht so schön. Ich habe mir zum Verreisen einen Alukoffer gebastelt, da ist im Deckel ein alter 15 Zöller verschraubt und der RasPi liegt in einem kleinen Teilefach. Tastatur, Maus und Netzteil liegen auch in einem großen Fach. Also nur aufklappen, Tastatur und Maus nehmen, Strom ran und fertig.

Jetzt mitmachen!

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