itproject
Goto Top

Crontab erledigt Skript nicht bis zum Ende

Hallo zusammen,

habe crontab im Einsatz.
Das ganze ist auf einem Debian 5.0 Server installiert.

Habe zur Datensicherung ein Backup-Skript geschrieben, dass nach beendigung das Archiv auf einen FTP kopiert und anschließend das Original löscht.

wenn ich mit ./scriptname das Skript ausführe klappt alles wunderbar.
wenn ich allerdings das ganze mit Crontab automatisieren möchte beginnt das skript zu laufen und bricht während dem packvorgang ab.

d.h. crontab startet das skript, also das tasking funktioniert anscheinend, jedoch bricht es aus irgendeinem, mir nicht ersichtlichen grund nach nur 19k vom tar.gz ab (warscheinlich kleiner als 1sec)

Ich wäre dankbar für jede Hilfe face-smile

Danke u. Gruß

Itproject

Content-ID: 158168

Url: https://administrator.de/contentid/158168

Ausgedruckt am: 24.11.2024 um 17:11 Uhr

jhinrichs
jhinrichs 07.01.2011 um 13:30:23 Uhr
Goto Top
Moin,
zunächst einmal ein paar Fragen:
Unter welchen Rechten läuft das Skript wenn Du es von Hand startest und wenn es vom crond gestartet wird? Bricht der Übertragungsvorgang ab oder der Archivierungsvorgang?
Bitte poste doch einmal den relevanten Teil des Skripts sowie der crontab.

Grüße
itproject
itproject 07.01.2011 um 13:57:47 Uhr
Goto Top
Hi jhinrichs,

Der Crontab eintrag in /etc/crontab ist folgender:


SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

  1. m h dom mon dow user command
#00 12 * * * root /root/backup_mo2fr.sh


Das Script ist folgendes:

#!/bin/bash

### VARIABLEN

DATE=$(date +%Y%m%d)
TIME=$(date +%k%M)

### COMMANDS

echo "" >> /var/log/backup-daily.log &&
date >> /var/log/backup-daily.log &&
echo "Backup started" >> /var/log/backup-daily.log &&

tar -czvf /backup/myserver_backup_daily.tar.gz /var/tree/ /etc/ && # HIER BRICHT ES BEREITS NACH 19k ab.
cp /backup/myserver_backup_daily.tar.gz /backup/myserver_$DATE-$TIME.tar.gz &&

ncftpput -u myftpuser -p myftppassword myftpserver / /backup/myserver_$DATE-$TIME.tar.gz &&

rm /backup/myserver_$DATE-$TIME.tar.gz &&
date >> /var/log/backup-daily.log &&
echo "Backup completed without errors" >> /var/log/backup-daily.log


Es bricht also definitiv wärent dem Archivierungsvorgangs ab.

Wenn ich es manuell starte dann auch mit root rechten.
im Crontab steht ebenfalls der user "root".


Danke und Gruß

Itproject
itproject
itproject 07.01.2011 um 13:59:21 Uhr
Goto Top
Zur Ergänzung,

der Crontabeintrag hat natürlich davor kein # ist nur aktuell so face-smile

Gruß

Itproject
carg
carg 10.01.2011 um 16:34:37 Uhr
Goto Top
Hi,

bei tar das - weglassen ....
was willst Du denn mit dem && ? Lass die doch einfach mal weg

Gruß
itproject
itproject 11.01.2011 um 08:38:35 Uhr
Goto Top
Hallo,

&& weglassen bringt leider auch nichts. Nach 19k ist mit Crontab Ende...

.. hätte mich auch gewundert, da auf zwei anderen Servern das gleiche Skript in Kombination mit Crontab super funktioniert.

Trotzdem Danke für die Mühe.

Hat vielleicht jemand noch eine Idee?
jhinrichs
jhinrichs 11.01.2011 um 10:05:01 Uhr
Goto Top
Moin,
welche Datei wird denn nach 19k "getart"? Du führst ja tar mit der Option "v" aus, also sollte es eine Liste der archivierten Dateien auf STDOUT ausgeben. Das würde ich erst einmal in eine Datei umleiten, sofern Du nicht sowieso vom crond eine Mail mit den Ausgaben der enthaltenen Kommandos erhältst.
Wenn dann tar immer bei der gleichen Datei abbricht, ist natürlich die Fehlermeldung noch interessant:
Also einmal die tar-Zeile im Skript ergänzen:
tar -czvf /backup/myserver_backup_daily.tar.gz /var/tree/ /etc/  > /root/stdout.txt 2> /root/stderr.txt 
und dann bitte die Dateien /root/stdout.txt und /root/stderr.txt einmal hier posten.

Danke und Grüße
itproject
itproject 11.01.2011 um 10:40:37 Uhr
Goto Top
Hi Jhinrichs,

ich danke erstmal für die Antwort.

Bin heute morgen auch erstmal auf die Idee gekommen das ganze mal zu Loggen -->

habe erstmal festgestellt, dass das Skript 1 Sec arbeitet und dann beendet. --> wärend dieser zeit schafft er 19k
habe das Skript noch erweitert (d.h. mehr zu tun zum abarbeiten) --> plötzlich macht er schon 1,8mb

Habe gerade eben mit > das Archivieren in mein Logfile eingehängt --->
und siehe da, sobald ich einen Log mitlaufen lasse wird das ganze ordnungsgemäß gepackt und zwar komplett.

d.h. crontab (ich glaube das muss ein bug sein oder ähnliches) läuft genau so lange, wie der Log mitläuft.

Wie kann soetwas sein?
Ich werde zwar das Backup sowiso loggen, allerdings darf Crontab nicht abbrechen wenn ich es nicht mache...

Auf den anderen Servern ging das ja auch prächtig face-smile

Kann ich irgendwie die Crontab version oder ähnliches rausfinden, vllt ist in dieser Version irgend ein Fehler enthalten der später korrigiert wurde.

Vielen Dank u. Gruß

Itproject
jhinrichs
jhinrichs 11.01.2011 um 15:14:30 Uhr
Goto Top
Hallo,
welche Version Du hast, verrät Dir die Paketverwaltung. Unter einem RPM-basierten System z. B. das Kommando
rpm -qa | grep cron
bei Debian müsste es
dpkg --get-selections | grep cron
oder so sein, mit Debian kenne ich mich nicht aus.
Ich glaube aber eigentlich nicht, dass es damit zu tun hat.
Läuft denn Dein Backup-Skript weiter, wenn tar abbricht, also funktioniert der Kopier- und Uploadvorgang oder bricht das ganze Skript ab?
Und was passiert, wenn Du das Skript nicht direkt in die crontab schreibst, sondern ein Aufrufskript, das so aussieht:
#!/bin/bash

/root/backup_mo2fr.sh &

Das soll kein Workaround sein, sondern der Fehlersuche dienen.

Grüße
itproject
itproject 12.01.2011 um 15:29:50 Uhr
Goto Top
Hallo,

vielen Dank.

ich werde das mal ausprobieren.

Gruß Itproject