• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[solved] cronscript macht Probleme,manuell funzt es->waru

ich möchte mit digitemp regelmässig die temperatur im raum messen.

dazu rufe ich das programm aus der konsole (user = root) mit
./digitemp -a
auf.
die ausgabe schreibe ich mit
-l/var/log/temp
in eine logdatei

wenn ich manuell

./digitemp -a -l/var/log/temp

eingebe (user = root, mit su eingeloggt), funzt alles wunderbar.

nun wuerde ich das gern automatisieren,
also habe ich in die crontab (/etc/crontab) mit einem texteditor
folgendes eingefügt:

* * * * * root /home/wolfgang/bin/temp

temp ist ein script in dem folgendes steht:

#!/bin/sh

/home/fritz/downloads/digitemp-1.7/digitemp -a -l/var/log/temperature

führe ich ./temp auf der konsole aus funzt es (user = root)

mit cron bekomme ich immer folgende fehlermeldung:


Cron <root@snoopy> /home/fritz/bin/temp
Error initalizing
DigiTemp v1.7 Copyright 1996-2002 by Brian C. Lane
GNU Public License v2.0

Error opening tty:


die gleiche fehlermeldung bekomme ich, wenn ich das script "temp" als user ausführe und nicht als root.
die mail von meinem server (snoopy) ist aber von root (<root@snoopy>) d.h. der rechner führt den befehl als root aus.
ich habe mittlerweile alles probiert, befehl direkt in crontab eingetragen, umweg ueber script, root durch user in crontab ersetzt um zu sehen was passiert .... irgendwie weis ich nicht mehr weiter ....
 
Dein Program möchte etwas auf die Konsole ausgeben, kann es aber nicht da keine Konsole da. "Error opening tty: " ist da recht eindeutig. Du könntest versuchen Standadout und Standarderror in eine Datei zu leiten.
 
OP
F

fritzbee21

Hacker
gute idee (dachte ich), also die crontab folgendermassen verändert:

* * * * * root /home/fritz/downloads/digitemp-1.7/digitemp -a -l/var/log/temperature >/dev/null

schreibe die ausgabe in die datei /dev/null

-> ergebnis - cron schickt mir folgende mail:

Error initalizing


ok, kommando zurück, crontab folgendermassen geändert:

* * * * * root /home/fritz/downloads/digitemp-1.7/digitemp -a -l/var/log/temperature


jetzt bekomme ich folgende mail:


Error initalizing
DigiTemp v1.7 Copyright 1996-2002 by Brian C. Lane
GNU Public License v2.0

Error opening tty:


heisst doch eigentlich:
der serielle port kann von cron nicht geöffnet werden
einmal wird die ausgabe nach /dev/null geschrieben, beim anderen mal nicht. das problem (naemlich das öffnen des portes wird nicht gelöst)
ich kann natürlich auch noch euin 2>&1 dahinter schreiben, dann bekomme ich von cron keine mail, die temperatur wird auch auch nicht abgefragt.

warum kann ich dieses script nur auf der konsole ausführen und cron nicht .... das gibts doch garnicht
:(
 
OP
F

fritzbee21

Hacker
ok per zufall bin ich auf die loesung gekommen.
cron ruft digitemp auf, sagt dem programm aber nicht wo die config datei liegt

d.h. man muss beim aufruf dem programm sagen wo das config file liegt.

* * * * * root /home/fritz/bin/digitemp -a -c/home/fritz/bin/.digitemprc -l/var/log/temperature >/dev/null

>/dev/null verhindert in diesem fall, das der cron mir jedesmal nach ausführung eine email schickt.
 
Oben