Shellscript per Cronjob ausführen

RobotSox

New Member
Hallo ich habe folgendes Problem.

Ich habe ein Script welches ich über SSH ausführen kann, wenn ich es aber über Cronjob ausführen lassen will, passiert garnichts, kein error, ...

Weis einer was das sein kann?

OS: debian 6

Script:
Code:
#!/bin/sh

datum=$(date +%Y-%m-%d)
cd /home/gta/backup
mkdir $datum
cd $datum

tar -cvzf sicherung.tar.gz /var/www/vhosts/tl/subdomains/nsl./files/*

Mein befehl in der crontab ist folgender:

Code:
$
1       *       *       *       *       sh /root/backup.sh

Gruß Tim
 
Ist das Skript ausführbar?
Stimmen die Umgebungsvariablen im cron?
Ist es die richtige Crontab von root?
Dein Skript wird eine Minute ja jeder vollen Stunde ausgeführt. Ist das korrekt?
 
Code:
#!/bin/bash
datum=$(date +%Y-%m-%d)
/bin/mkdir -p /home/gta/backup/$datum
/usr/bin/tar -cvzf /home/gta/backup/$datum/sicherung.tar.gz /var/www/vhosts/tl/subdomains/nsl./files
Code:
1       *       *       *       *       /bin/bash /root/backup.sh
 
Hausaufgabe: Was passiert, wenn das Script länger als 59 Sekunden läuft?

Daaaaaan gibt es einen neuen Thread mit dem Titel: Root wird immer langsamer...IO-Last ziemlich hoch...

Code:
log () { echo -e "$@" >&2 ;}

backup () {
    touch /tmp/$$.lock
    #Kot vom backupscript
    rm /tmp/$$.lock
    return
}

if [ ! -f /tmp/$$.lock ]; then
    log Scheißdingen mach jetzt diese Backup
    backup
else
    log Scheißdingen ist nach 59 Sekunden immer noch nicht fertig FUCK
fi

So irgendwie. Hab schon länger keine Shellscripts mehr geschrieben. Ich neige immer dazu alles in Funktionen zu unterteilen. Der Code ist dann einfacher zu testen, übersichtlicher und besser wartbar, wenn man es richtig macht. Dein Backupscript könnte z.B. auch in der Funktion einen Statuscode zurückgeben. Damit könnten dann z.B. mit case bestimmte Aktionen unternommen werden (e-mail senden usw.).
 
Last edited by a moderator:
Wieso?
Das Script unter /sbin speichern und dann als Cron:
Code:
killall -0 <scriptname> || <scriptname> 2> /dev/null
sollte gehen :D
 
Back
Top