Seite 1 von 1
Python Script per Cronjob ausführen - Raspberry
Verfasst: Montag 16. Dezember 2013, 18:26
von Goldrausch
Ich habe an dem Raspberry ein AD- Wandler mit dem ich eine Spannung auslesen. Zurzeit starte ich das Python Sktipt mit
dem Befehl
danach ist jedoch ständig die Bash belegt, weil ständig eine Datei geschrieben wird:
open file `volt1.txt` mode ´w´ at 0xb6c44390
open file `volt1.txt` mode ´w´ at 0xb6c44355
open file `volt1.txt` mode ´w´ at 0xb6c44337
..................
............
........
ich habe es mit dem bearbeiten der crontab versucht, jedoch funktioniert es nicht
also ich habe folgendes in die crontab Datei geschrieben, wo sonst noch nichts drin steht ausser ein Text:
Code: Alles markieren
aber das auslesen des AD Wandlers wird nicht gestartet. Was mache ich falsch?
Re: Python Script per Cronjob ausführen - Raspberry
Verfasst: Dienstag 17. Dezember 2013, 00:08
von BlackJack
@Goldrausch: Wie meinst Du das in der ``crontab`` steht nichts drin? Wenn ``/etc/crontab`` tatsächlich leer war, dann stimmt da etwas nicht. Oder wo hast Du das eingetragen?
Re: Python Script per Cronjob ausführen - Raspberry
Verfasst: Dienstag 17. Dezember 2013, 08:19
von mutetella
Zudem ist die crontab doch IMHO nicht der richtige Ort, um Programme beim Booten automatisch zu starten. Das würde ich eher in die `/etc/rc.local` setzen, ohne `sudo`, da `/etc/rc.local` bereits mit root-Rechten ausgeführt wird.
Und wenn Du das Skript vom Terminal aus im Hintergrund starten möchtest, setzt Du hinter die Befehlszeile ein '&'.
mutetella
Re: Python Script per Cronjob ausführen - Raspberry
Verfasst: Dienstag 17. Dezember 2013, 20:21
von Goldrausch
wenn ich den Befehl:
in die `/etc/rc.local`
schreibe, dann wird nach dem booten das py. Skript automatisch ausgeführt, aber ich kann mich nicht mehr einloggen.
D.h. es wird ständig der AD-Wandler ausgelesen aber ich möchte eigentlich, das es im Hintergrund passiert ohne das ich sozusagen etwas davon mitbekomme.
open file `volt1.txt` mode ´w´ at 0xb6c44390
413
open file `volt1.txt` mode ´w´ at 0xb6c44355
433
open file `volt1.txt` mode ´w´ at 0xb6c44337
423
..................
............
........
Re: Python Script per Cronjob ausführen - Raspberry
Verfasst: Dienstag 17. Dezember 2013, 20:30
von fail
Ich habe erst gestern angefangen mit Linux

, aber ich glaube um in der Shell etwas im Hintergrund laufen zu lassen muss man ein & am Schluss anhängen.
z.B.
http://www.howtogeek.com/111417/how-to- ... s-at-once/
Re: Python Script per Cronjob ausführen - Raspberry
Verfasst: Dienstag 17. Dezember 2013, 20:34
von Goldrausch
Habe ich ja gemacht siehe oben, aber es wird nicht im Hintergrund ausgeführt.
Re: Python Script per Cronjob ausführen - Raspberry
Verfasst: Dienstag 17. Dezember 2013, 20:35
von BlackJack
@Goldrausch: Mit dem ``&`` am Ende dürfte das eigentlich nicht passieren. Wirklich nicht.
Re: Python Script per Cronjob ausführen - Raspberry
Verfasst: Dienstag 17. Dezember 2013, 20:41
von Goldrausch
Es ist aber so :K
egal ob ich das py. Skript manuell per Terminal ausführe oder es beim starten automatisch ausführen lasse.
kann das eventuell an dem Python Skript liegen ?
Re: Python Script per Cronjob ausführen - Raspberry
Verfasst: Dienstag 17. Dezember 2013, 20:47
von BlackJack
@Goldrausch: Das kann nicht sein. Dann wäre Dein Raspberry und Deine Shell die einzige auf der Welt bei der das ``&`` nicht für eine asynchronen Ausführung sorgt. Dann lebst Du in einem Paralleluniversum und musst jemanden von dort fragen.

Re: Python Script per Cronjob ausführen - Raspberry
Verfasst: Dienstag 17. Dezember 2013, 21:06
von Goldrausch
toll das hilft mir jetzt auch nicht weiter
das mit der & Funktion funktioniert ja mit anderen Befehlen, aber nicht mit diesem Python Skript.
Re: Python Script per Cronjob ausführen - Raspberry
Verfasst: Dienstag 17. Dezember 2013, 21:10
von cofi
Ich glaube du hast eine falsche Vorstellung davon, was es heisst, dass ein Programm im Hintergrund ausgefuehrt wird.
Das ganze heisst nicht mehr, als dass die Shell nicht abwartet bis sich das Programm beendet hat. Es heisst _nicht_ dass die Ausgabe umgeleitet / versteckt wird, das musst du selbst tun.
Kann es sein, dass du durch die Ausgabe den neuen Prompt der Shell uebersiehst?
Re: Python Script per Cronjob ausführen - Raspberry
Verfasst: Dienstag 17. Dezember 2013, 21:10
von BlackJack
@Goldrausch: Doch das funktioniert auch mit dem Python-Skript. Das was beim ``&`` passiert macht die Shell ganz unabhängig von dem Programm welches damit gestartet wird mit *jedem* Programm. Da hat das gestartete Programm keinen Einfluss drauf. Das könnte das nicht einmal verhindern wenn es das wollte.
Re: Python Script per Cronjob ausführen - Raspberry
Verfasst: Mittwoch 18. Dezember 2013, 08:54
von mutetella
@Goldrausch: Poste doch mal Deine `/etc/rc.local`, auch wenn das jetzt eigentlich nicht mehr in dieses Forum gehört...
mutetella
Re: Python Script per Cronjob ausführen - Raspberry
Verfasst: Mittwoch 18. Dezember 2013, 15:10
von Goldrausch
Hier der Inhalt der /etc/rc.local ganz unten habe ich das Python Script angehängt.
Code: Alles auswählen
#! /bin/sh
### BEGIN INIT INFO
# Provides: rc.local
# Required-Start: $all
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: Run /etc/rc.local if it exist
### END INIT INFO
PATH=/sbin:/usr/sbin:/bin:/usr/bin
. /lib/init/vars.sh
. /lib/lsb/init-functions
do_start() {
if [ -x /etc/rc.local ]; then
[ "$VERBOSE" != no ] && log_begin_msg "Running local boot scripts (/etc/rc.local)"
/etc/rc.local
ES=$?
[ "$VERBOSE" != no ] && log_end_msg $ES
return $ES
fi
}
case "$1" in
start)
do_start
;;
restart|reload|force-reload)
echo "Error: argument '$1' not supported" >&2
exit 3
;;
stop)
;;
*)
echo "Usage: $0 start|stop" >&2
exit 3
;;
esac
/home/pi/read_adwandler.py & # startet AD-Wandler
exit 0
Re: Python Script per Cronjob ausführen - Raspberry
Verfasst: Mittwoch 18. Dezember 2013, 15:20
von BlackJack
@Goldrausch: Das ist nicht der Inhalt von ``/etc/rc.local``. Falls es das bei Dir tatsächlich ist: Wo kommt denn *der* Inhalt her? Das ist Code der die ``/etc/rc.local`` ausführt, gehört dort selbst also nicht hinein. Normalerweise sieht die Datei in frischem Zustand auf Debian Wheezy so aus:
Code: Alles auswählen
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
exit 0
Re: Python Script per Cronjob ausführen - Raspberry
Verfasst: Mittwoch 18. Dezember 2013, 15:24
von mutetella
@Goldrausch: Das ist doch nicht Deine `/etc/rc.local`...
mutetella