Cronjob startet nicht

Hallo,

ich habe folgendes Problem:

Ich möchte folgendes Skript per Cronjob einmal täglich um 2 Uhr starten

#Datum in Variable schreiben
DATUM=date +%Y-%m-%d-%H%M

#Variablen
BACKUPDIR=/backup/backupskript/dateisystem
VERZ1=/home
VERZ2=/var

#Anlegen des Ordners mit Datum
mkdir $BACKUPDIR/$DATUM

#Setzen der Rechte
chown root $BACKUPDIR/$DATUM
chmod 744 $BACKUPDIR/$DATUM

#Backup der Verzeichnisse
cp -p -r $VERZ1 $VERZ2 $BACKUPDIR/$DATUM

[/CODE]

Dazu habe ich mit crontab -e folgenden Eintrag gemacht

00 3 * * * root sh -c /backup/backupskript/backup.sh

Wenn ich den Befehl sh -c /backup… manuell in der shell ausführe läuft das Skript ohne Probleme, der cronjob startet ihn jedoch leider nicht.

Kann mir jemand sagen, woran das liegen kann?

Grüße,
Sebastian

Hallo TheWombat,

du kannst (leider) nicht davon ausgehen, das ein Job, der unter cron laufen soll, über dieselben Einstellungen der Umgebungsvariablen verfügt, wie deine (interaktive) Shell. Teste mal, ob $PATH (und ggf. weitere verwendte Variablen) wie von dir benötigt gesetzt ist. Im Zweifel solltest du die verwendeten Programme (date, cp) mit absoluten Pfaden (/usr/bin/dateno.ä.) spezifizieren.

HTH
bernhard

Hallo,

kannst du das vielleicht etwas weiter spezifizieren? Wie muss ich das Skript konkret erweitern?
Ich bin erst am Beginn meiner „Linux Karriere“ und dies ist mein erstes Skript, was ich per cron laufen lassen möchte.

Grüße,
Sebastian

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

kannst du das vielleicht etwas weiter spezifizieren? Wie muss
ich das Skript konkret erweitern?
Ich bin erst am Beginn meiner „Linux Karriere“ und dies ist
mein erstes Skript, was ich per cron laufen lassen möchte.

Grüße,
Sebastian

Hi Sebastian,

bist du dir auch sicher, dass dein crontab-Eintrag richtig ist (dein 6. Feld ist roor??? - siehe Auszug aus ‚man crontab‘ unten)? Soll das Skript als root laufen (ggf. besser mit sudo arbeiten)?

Du könntest zuallererst mal versuchen, dass Script mit ‚ksh -x‘ zu starten, um zu sehen was funktioniert und welche Stellen als fehlerhaft angemeckert werden - also z.B. mit

ksh -x -c /backup/backupskript/backup.sh &gt:stuck\_out\_tongue\_winking\_eye:fad\_zur\_Logdatei 2\>&1

Wahrscheinlich steht dann im Log, dass einige der angesprochenen Programme (cp, chown, chmod?) nicht gefunden werden. Dann solltest du in deinem Skript zunaechst die PATH-Variable so setzen, dass diese Programme gefunden werden können (also mit export PATH=$PATH:smile:.

Wenn du nicht weiterkommst, poste mal die Logdatei-Ausgabe vom ksh -x.

gruss
bernhard

Auszug ‚man crontab‘ (Solaris)

 A crontab file consists of lines of six fields each. The
 fields are separated by spaces or tabs. The first five are
 integer patterns that specify the following:

 minute (0-59),
 hour (0-23),
 day of the month (1-31),
 month of the year (1-12),
 day of the week (0-6 with 0=Sunday).

 The sixth field of a line in a crontab file is a string that
 is executed by the shell at the specified times. A percent
 character in this field (unless escaped by \) is translated
 to a NEWLINE character.

Hallo,

ich wollte mir gerade das Skript nochmal zu gemüte führen, und siehe da, der Server hat letzte Nacht wie gewünscht ein Backup gemacht - ohne am Skript etwas zu ändern.

Wie das jetzt sein kann weiss ich nicht, davor habe ich es mehrfach probiert und es hat nicht funktioniert…

Trotzdem danke für eure Tips.

Grüße,
Sebastian