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

date-Befehl als cronjob !

mikemake

Newbie
Hallo,
ich möchte mit dem date-Befehl eine Textdatei mit dem aktuellen Datum versehen und diese dann zur Kontrolle per rsync auf einen anderen Rechner kopieren. Manuell per shell mache ich das wie folgt:
Code:
date > /home/projekt/datum
Das funktioniert eiwandfrei. Wenn ich das ganze aber als cronjob ausführen will
Code:
3 9 * * *  root date > /home/projekt/datum
dann passiert zum angegebenen Zeitpunkt gar nichts.
Andere cronjobs werdem klaglos abgearbeitet.
Was mache ich falsch?

mikemake
 

taki

Advanced Hacker
Der älteste Cron Fehler: Du musst immer den vollen Pfad zum ausführbaren Programm angeben, weil beim Cronjob der Pfad nicht gesetzt ist.

Mich wundert nur, dass Dein root keine Fehlermail von crond bekommen hast. Normalerweise mailt der Dir "sh: file or directory not found" oder etwas ähnliches.

Versuch es mit

Code:
3 9 * * *  root /usr/bin/date > /home/projekt/datum



Noch ein Tip: Wenn Du den String formatiert haben möchtest (s. man date), musst Du die Prozentzeichen entwerten.

Nach diesem Problem habe ich mir neulich (vor dem Kalva 0.7.0 Release) die Karten gelegt und von Abends um 9 bis zum Sonnenaufgang rumgestochert.

Wieso das so ist, kann ich nicht nachvollziehen. Aber das es so ist, habe ich leidvoll erfahren...
 
OP
M

mikemake

Newbie
Hallo whois,
hallo taki,

danke für den Tip! Habe folgendes ausprobiert:
mit
Code:
type date
habe ich den Pfad für den date-Befehl in /bin/date ermittelt. Dann habe ich meine crontab wie folgt editiert:
Code:
3 11 * * *   root /bin/date > /home/projekt/date
Leider wurde der Befehl immer noch nicht ausgeführt.
Root hat auch keine Fehlermail bekommen.
 

taki

Advanced Hacker
mikemake schrieb:
Code:
3 11 * * *   root /bin/date > /home/projekt/date

Den Befehl "root" kennt die Shell nicht :? , ich übrigens auch nicht... Rufe den Crontab-Editor mit folgendem Aufruf auf, um einen Job für den Benutzer root einzurichten:

Code:
bash-2.03$ crontab -e root

Lass dann beim Komando den root weg.

Code:
3 11 * * *   /bin/date > /home/projekt/date
 
OP
M

mikemake

Newbie
Bei der Eingabe von
Code:
bash-2.03$ crontab -e root
erhalte ich folgende Meldung:
Code:
-bash: bash-2.03$: command not found
Auch ein "normaler" Eintrag in die crontab
Code:
15 11 * * *   /bin/date > /home/projekt/date
bringt keinen Erfolg!
Bin langsam etwas frustriert... :(
 

taki

Advanced Hacker
Dieses hat gerade eben in meiner crontab geklappt:

Code:
#test                                     
05 15 * * * /usr/bin/date >tagesdatum.txt

Kann es sein, dass der Job zu kurzfristig geplant wird? Mir war neulich bei meinem K(r)ampf wegen der Prozentzeichen im "date" Aufruf aufgefallen, dass cron Jobs nicht mehr ausführt, wenn sie beim Schreiben der crontab nicht mindestens zwei Minuten in der Zukunft liegen. Das erschwert natürlich das Testen ungemein.

Wie editierst Du die crontab, wenn die Bash behauptet das Programm crontab nicht zu finden? Was sagt denn "which crontab" ? Schon mal versucht, als root crontab -e aufzurufen?
 
OP
M

mikemake

Newbie
Also - der Reihe nach:

ich bin als root angemeldet, arbeite ohne graphisches System und editiere die crontab mit dem befehl
Code:
crontab -e
im vi.

Nach deinem Tip mit der zu kurzen Zeit habe ich ihm mal fünf Minuten Zeit gegeben - ohne Erfolg!
Ach ja, und
Code:
which crontab
gibt mir
Code:
/usr/bin/crontab
aus.
Muß bei
Code:
date > ziel
auf beiden Seiten von > ein Leerzeichen sein oder muß es
Code:
date >ziel
heißen, wie in Deinem posting? Habe beides ausprobiert. Leider immer noch ohne Erfolg.
 

TeXpert

Guru
mikemake schrieb:
Muß bei
Code:
date > ziel
auf beiden Seiten von > ein Leerzeichen sein oder muß es
Code:
date >ziel
heißen, wie in Deinem posting? Habe beides ausprobiert. Leider immer noch ohne Erfolg.

egal, aber Du musst nicht date sondern /ganz/langer/pfad/zu/date schreiben
 
Oben