Hallo Leute, ich war auf der Suche nach einer Möglichkeit Daten (mitunter Temperaturen) zu protokollieren. Dazu habe ich folgende tolle Seite gefunden: http://www.sweetpi.de/blog/436/luftfeuchtigkeit-und-temperatur-mit-dem-raspberry-pi-messen Ich habe das vorgefertigte Programm so abgeändert, dass eine CSV Datei mit Timestamp und den Daten erstellt wird und die Daten jede Minute dort geschrieben werden. Das Ganze funktioniert, wenn ich das Programm über putty starte einwandfrei und die Datei wird auch erstellt und mitprotokolliert. Nun zu meinem Problem(en): 1.) Wenn ich Putty einfach schliesse, dann beendet sich anscheinend auch das Programm zum mitprotokollieren?!?! Denn die Aufzeichnung endet dann. 2.) Wieso muss man das Programm über ./pfad/programm starten?? Für was ist der Punkt und der Backslash? 3.) Wie kann ich das Programm in den Autostart von Raspi verschieben? Ich weiß, dass ich normalerweise nur den Pfad zum Programm in die Datei "etc/rc.local" reinschreiben muss und dann startet das Programm auch. Da aber der "Pfad" so seltsam mit ./ ist funktioniert dies leider nicht. 4.) Wie wird das Ganze kompiliert? Was bewirkt dieses make? Ich kenne nur den g++ und den gcc Kompiler auf dem Raspi. Vielen Dank für eure Hilfe!!
Besorg dir ein Buch über Unix und die Unix-Shell. Da ist z.B. beschrieben, wie man mit & Programme im Hintergrund weiter laufen lassen kann. Wie die Pfade funtionieren und was es mit PATH auf sich hat. Über make gibt es eigene Bücher, anfangen kann man auch mit http://de.wikipedia.org/wiki/Make Was einen Überblick verschafft. Weitere Literatur dazu steht unten im Wikipedia-Artikel.
> 1.) Wenn ich Putty einfach schliesse, dann beendet sich anscheinend auch > das Programm zum mitprotokollieren?!?! Denn die Aufzeichnung endet dann. Klar. VNC oder screen könnten hier Abhilfe schaffen. Oder in einen Dämon verschieben. > 2.) Wieso muss man das Programm über ./pfad/programm starten?? > Für was ist der Punkt und der Backslash? ..weil Du den Pfad nicht in PATH drin hast. Der Punkt ist das aktuelle Verzeichnis und der ∗Vorwärts∗-Slash ist das Verzeichnistrennzeichen. > 3.) Wie kann ich das Programm in den Autostart von Raspi verschieben? > Ich weiß, dass ich normalerweise nur den Pfad zum Programm in die Datei > "etc/rc.local" reinschreiben muss und dann startet das Programm auch. Da > aber der "Pfad" so seltsam mit ./ ist funktioniert dies leider nicht. Siehe 2.) - adäquat in PATH aufnehmen oder den Pfad korrekt (hier: absolut) angeben. > 4.) Wie wird das Ganze kompiliert? Was bewirkt dieses make? > Ich kenne nur den g++ und den gcc Kompiler auf dem Raspi. make ist ein Buildmanagementtool das (u.a.) dazu genutzt werden kann um mit g++ oder gcc oder wasauchimmer Quellcode zu compilieren (und zu linken). Schau spaßeshalber mal in des von configure erzeugte Makefile rein :-)
g457 schrieb: >> 1.) Wenn ich Putty einfach schliesse, dann beendet sich anscheinend auch >> das Programm zum mitprotokollieren?!?! Denn die Aufzeichnung endet dann. > > Klar. VNC oder screen könnten hier Abhilfe schaffen. Oder in einen Dämon > verschieben. > So klar ist das für mich nicht. Denn alle andren Programme die ich bisher über putty gestartet habe sind auch weitergelaufen! >> 2.) Wieso muss man das Programm über ./pfad/programm starten?? >> Für was ist der Punkt und der Backslash? > > ..weil Du den Pfad nicht in PATH drin hast. Der Punkt ist das aktuelle > Verzeichnis und der ∗Vorwärts∗-Slash ist das Verzeichnistrennzeichen. > Upps...meinte natürlich Slash. :-) >> 3.) Wie kann ich das Programm in den Autostart von Raspi verschieben? >> Ich weiß, dass ich normalerweise nur den Pfad zum Programm in die Datei >> "etc/rc.local" reinschreiben muss und dann startet das Programm auch. Da >> aber der "Pfad" so seltsam mit ./ ist funktioniert dies leider nicht. > > Siehe 2.) - adäquat in PATH aufnehmen oder den Pfad korrekt (hier: > absolut) angeben. > Eigentlich ist der Pfad /pfad/progamm absolut, aber so kann ich das Programm nicht starten!! Wie komme ich zum absoluten Pfad, falls dieser wirklich nicht absolut ist?? >> 4.) Wie wird das Ganze kompiliert? Was bewirkt dieses make? >> Ich kenne nur den g++ und den gcc Kompiler auf dem Raspi. > > make ist ein Buildmanagementtool das (u.a.) dazu genutzt werden kann um > mit g++ oder gcc oder wasauchimmer Quellcode zu compilieren (und zu > linken). Schau spaßeshalber mal in des von configure erzeugte Makefile > rein :-) Das heißt make nutzt in Wirklichkeit eh g++? DANKE für deine Hinweise!! @PittyJ: Bin nicht auf der Suche nach Literatur, sondern auf der Suche nach konkreten Hinweisen! Ansonsten hätt ich bei amazon geschaut und nicht hier im Forum! ;-)
Hector Albadez schrieb: > 1.) Wenn ich Putty einfach schliesse, dann beendet sich anscheinend auch > das Programm zum mitprotokollieren?!?! Denn die Aufzeichnung endet dann. Dein Programm wird als Unterprozess (Child) deiner Benutzersession (Parent) gestartet. Wird diese Beendet dann werden auch alle dazugehörigen Unterprozesse beendet. Dieses Verhalten kann man mit dem Befehl "nohup" verhindern da dieser Befehl das Programm abgekoppelt von Deiner Benutzersession startet. Also z.B.: nohup "Dein_Programm" & (Das & Schickt das Programm in den Hintergrund). > 2.) Wieso muss man das Programm über ./pfad/programm starten?? > Für was ist der Punkt und der Backslash? Ein "." Bezeichnet das aktuelle Verzeichnis. "./Programm" Startet das Programm mit Namen "Programm" im aktuellen Verzeichnis. Der Grund kann sein das der Pfad nicht in der Pfadvariablen vorhanden ist oder z.B. bei Root das automatische Verfolgen von Pfadvariablen deaktiviert ist. > 3.) Wie kann ich das Programm in den Autostart von Raspi verschieben? > Ich weiß, dass ich normalerweise nur den Pfad zum Programm in die Datei > "etc/rc.local" reinschreiben muss und dann startet das Programm auch. Da > aber der "Pfad" so seltsam mit ./ ist funktioniert dies leider nicht. In /etc/rc.local muß der komplette Pfad rein. Wie gesagt "./" bezeichnet das aktuelle Verzeichnis und ich glaube nicht das Dein Programm in "/etc" liegt. > > 4.) Wie wird das Ganze kompiliert? Was bewirkt dieses make? > Ich kenne nur den g++ und den gcc Kompiler auf dem Raspi. Make wird mit Kommandos aus einer Make Datei gefüttert. In dieser Datei ist auch vorgegeben welcher Compiler verwendet wird. Wenn es ein vorgefertigtes Programm ist, ist der "normale" Ablauf im Verzeichnis des neuen Programms: ./configure # Ermittelt ob alle Abhängigkeiten vorhanden sind # und bereitet das Makefile für Deine Umgebung vor make # Führt das Makefile aus (Kompilieren, Linken,...) make install # Installiert das Programm (Verteilt die fertigen # Programmteile in den entsprechenden Verzeichnissen)
Vielen Dank für die vielen hilfreichen Infos! Habe einiges dazugelernt. Bezügl. "autorun": Liegt der Ordner "cd lol_dht22" aus dem obigen Link wirklich im root Verzeichnis? Normalerweise müsste es doch reichen, wenn ich in der rc.local folgendes reinschreibe: "lol_dht22/loldht" Wenn ich dies allerdings in Putty so reinschreibe, dann startet das Programm nicht. Ich muss entweder in das Verzeichnis wechseln (mit "cd loldht22") und dann das Programm mit "./loldht" starten oder direkt "./lol_dht22/loldht" zum Starten eingeben. Für mein Verständnis wäre doch "lol_dht22/loldht" der absoluste Pfad, oder nicht? Danke für euer Wissen und eure Hilfe! Finde das Forum hier super, weil echt gute Leute unterwegs sind!
Hallo, mit "cd lol_dht22" wechselst Du im aktuellen Verzeichnis in das Unterverzeichnis lol_dht22. Der Absolutpfad gilt immer vom Root Verzeichnis "/". Wenn Du im Verzeichnis des Programms bist, dann gib den Befehl "pwd" ein. Damit siehst du den absoluten Pfad den Du brauchst. Hier zum Vergleich: cd /home/user # Wir fangen im Home Verzeichnis an /test/xyz # Datei xyz im Verzeichnis /test test/xyz # Datei xyz im Verzeichnis /home/user/test ./test/xyz # wie test/xyz ../test/xyz # Datei xyz im Verzeichnis /home/test
schriebe doch in die /etc/rc.local folgends ganz unten: /xxxxx/yyyyy/programm dann wird es auch ausgeführt.
Danke euch! Jetzt hab ichs verstanden. Als Windowskind bin ich doch etwas verwöhnt und mit den detailierten Angaben nicht so vertraut! :-) Ich probiers heut am Abend nochmal aus und sag euch Bescheid!!! DANKE auf jeden Fall!
Markus C. schrieb: > schriebe doch in die /etc/rc.local folgends ganz unten: > > /xxxxx/yyyyy/programm > > dann wird es auch ausgeführt und schreibe noch ein & dahinter, sonst bleibt der Init-Prozess an der Stelle stehen! Also so: /xxxxx/yyyyy/programm &
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.