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

Cronjob reagiert falsch

Moin,

kennt hier jemand Dirvish? Ist eine Scriptsammlung für Backups und setzt auf rsync auf.

Eine merkwürdige Reaktion kriege ich hier: wenn ich das Backup per cron aufrufe, sagt er immer nur sofort "fertig" (Meldung per Mail an root) und beendet sich sofort wieder. Rufe ich das Script per Hand auf (als root), läuft es normal durch, das Backup könnte also funktionieren und mein Script ist auch ok.

Woran könnte das liegen?

Ein paar Details:

In /etc/crontab heißt es z. B.

Code:
15 09 * * 1-5 root /root/bin/backup-dirvish

Dieses Script von mir mountet die Backup-Festplatte und schmeißt Dirvish an:

Code:
#!/bin/sh

mount /dev/sdg1 /mnt

if [ ! -d /mnt/backups ]
then
    echo Backupfestplatte nicht gefunden
    exit 1
fi

/usr/local/sbin/dirvish-expire
/usr/local/sbin/dirvish-runall

umount /mnt

Wenn jetzt cron dieses Script anwirft, läuft Dirvish nur in einer Sekunde leer durch und meldet "done". Wenn ich es per Hand anwerfe, läuft es ganz normal und backt up oder upt back... :)

Rolf
 
Hat sich aufgeklärt - es lag am Pfad.

Wird das Script per cronjob aufgerufen, fehlt ihm der Pfad zum Programm. Deshalb hab ich in meinem Script

Code:
PATH=$PATH:/usr/local/sbin

angegeben, und jetzt läuft es.

Rolf
 
Hallo,

wozu dient das das root in deinem crontab Eintrag?

Code:
15 09 * * 1-5 root /root/bin/backup-dirvish

Ich denke es ist besser eine crontab für den User root anzulegen und wichtige Dinge darin laufen zu lassen. Am besten noch mit einer Ausgabe in ein Logfile. Z.B.:

Code:
15 09 * * 1-5 /root/bin/backup-dirvish >> /home/username/log/backup-dirvish.log 2>&1

Gruß
Georg
 
Ich weiß nicht - soweit ich mich erinnere, hab ich mal gelesen, dass die das bei Suse so machen, weil das in der Umgebung von root ablaufen soll. Ich hab das nur so übernommen aus der vorgegebenen crontab.

Für eigene "lokale" cronjobs gibt es doch auch noch was, wo war es noch gleich? Jeder User kann sich sowas einrichten...

Rolf
 
Hallo,

ich vermute du meinst die Dateien:

Code:
      /etc/cron.allow
      /etc/cron.deny
Bei mir, einer Standardinstallation gibs cron.deny mit der Sperre für guest und gast. Das heisst, alle anderen Benutzer dürfen eine crontab anlegen.

Unter der Seite http://de.wikipedia.org/wiki/Cron stehen ein einige Erklärungen. Die Bedeutung des root in der Zeile des Eintrages aber nicht. Ich habe auch keinen Hinweis in den crontab Manpages gefunden. Dessen Sinn ist mir ein Rätsel, jetzt bin ich auch zu müde, um weiter zu recherchieren. Wenn es funktioniert, solls Recht sein.
Vielleicht kann es ja ein Anderer erklären.

Gruß
Georg
 
Hallo,

das ist ein naheligender Gedanke, ich bin aber trotzdem irritiert.
Die Bedeutung der Parameter in den Crontab Einträgen hängt von deren Position in der Zeile ab.
Laut üblicher Doku ist der Parameter in der Position 6 das auzuführende Kommando.
Unter Linux kann der Parameter 6 anscheinend zwei verschiedene Bedeutungen haben, wobei das auzuführende Kommando in die Position 7 rücken würde.
Das gehört in den Manpages für crontab erläutert.

Ich arbeite viel mit Unix und habe daher Vergleichsmöglichkeiten. Normalerweise sind die Manpages unter Linux besser als unter Unix.
Die Beschreibung der crontabs ist da leider eine unrühmliche Ausnahme.

Gruß
Georg
 
man 5 crontab (openSUSE 11.0):
  • The format of a cron command is very much the V7 standard, with a number of upward-compatible extensions. Each line has five time and date fields, followed by a user name if this is the system crontab file, followed by a command.
 
Oben