DHT22 auf Raspi - Programm läuft nicht

OP #3478902
Lesenswert?

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!!
Gast #3478909
Lesenswert?

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.
Gast #3478913
Lesenswert?

> 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 :-)
OP #3478974
Lesenswert?

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! ;-)
Gast #3479024
Lesenswert?

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)
OP #3479058
Lesenswert?

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!
Gast #3479110
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren