Linux 14.983 Themen, 106.385 Beiträge

Komisches Shellskript verhalten

hardez / 21 Antworten / Flachansicht Nickles

Hallo Leute,
ich hab ein seltsames verhalten bei einem Shellskript und weiß leider nicht mehr weiter.

Infos:
Ubuntu Linux (6.06 Dapper LTS) auf einem
Intel Dual Xeon á 1,6 GHz (4x1,6 GHz)
Raid 5 3x80 GB


Soviel zum System an sich.
Auf dem Server läuft VMWare Server 1.02 und in der VMWare läuft momentan ein Exchange Server.
Der Speicherplatz dieser VM ist komplett vorreserviert und nicht in 2GB blöcke aufgeteilt.

Diesen Exchange möchte ich nun per Shellskript auf einen externen NAS sichern.

Shellskript arbeitet (im groben) wie folgt:

-Variablen deklarieren
-VM herunterfahren
-Backup durchführen (Ordner in dem die VM liegt zippen und auf dem NAS speichern)
-VM starten
-Ende

Wenn ich dieses Skript von Hand anschmeiße ist auch alles OK.
Wenn ich dieses Skript auf eine andere VM anwende, bei der der Speicherplatz NICHT vorreserviert ist geht es auch.

Wenn ich allerdings das Skript per Cronjob um 3 Uhr Nachts ausführen lasse, Startet er das Skript, bricht aber nach ca. 4-700 MB Sicheurng OHNE Fehlermeldung ab.
In den Logs ist zumindest kein Fehler ersichtlich.

Jetzt kommt aber nicht mit Sprüchen wie: Dann schmeiß es doch per hand an.
Das geht nämlich nicht, da ich den Server zwischen 6 Uhr morgens und 1 Uhr nachts nicht herunterfahren darf.
Da ich nachts aber nicht arbeite, geht es nur per Cronjob!!

So nun hoffe ich das einer von euch ne Idee hat...

bei Antwort benachrichtigen
KarstenW hardez „Ich kopiere da nichts mehrfach. Der until loop erfüllt da schon seinen Zweck......“
Optionen

Du wertes in dieser until Schleife überhaupt keine Rückmeldungen von zip aus.
Die Variable $? speichert den Rückgabewert des letzten Befehls.
In dieser Schleife sind überhaupt keine Abbruchbedingungen definiert.


....
until [ $i -eq 10 ]
do
i=`expr $i + 1`
sleep 60
if [ ! -f "$WL" ]
then
nowtime=$(date +'%D-%R')
echo "Start packing at "$nowtime >>$BackupLog
zip -r $BackupDestination $DirToBackup >>$BackupLog
#echo "zip"
mbcheck=`ls -al "$BackupDestination" | awk '{print $5}'`
....
Wenn diese Writelock Datei nicht mehr existiert (keine Zugriffe auf den Server ?), dann wird die Schleife mehrmals durchlaufen.

Du mußt mit "if [ $? == 0 ] ; then break "aus dieser Schleife austreten, nach dem der zip Befehl erfolgreich war.
Wenn zip erfolgreich durchlief, wird nach dem done Schlüsselwort die Ausführung des Shellscriptes fortgesetzt und die Schleife abgebrochen.





Debian GNU/Linux https://www.debian.org/index.de.html
bei Antwort benachrichtigen