Script laeuft nicht zu Ende -- wo liegt der Fehler?

12/12/2007 - 17:17 von Michael Hagedorn | Report spam
Hallo.
Ich verstehe nicht, was an diesem Script nicht so will wie ich. Stoße
ich es von Hand an làuft alles bestens -- làuft es aber im Cronjob,
làuft es scheinbar nicht durch, sondern hört mitten drin ohne weitere
Warnungen auf. Wer kann mir verraten, wo da der Fehler liegt.

Genaue Fehlerbeschreibung:
Letzter Eintrag in der tape.log sieht nach dem Fehler immer so aus:
Mi Dez 12 00:02:44 CET 2007 : Band wurde getauscht. Naechstes Band wurde
eingelegt.

Danach ist Schluss -- aber das Script làuft auch nicht mehr (ps aux).
Die lock-Datei ist dann aber noch da.

Hier das Script:

#! /bin/bash

PATH=/bin:/usr/bin:/sbin:/usr/sbin
LOCKFILE=/var/lock/flexbackup

# Diese Prozedur wird nur im Fehlerfall und am Ende aufgerufen:
cleanup() {
rm -f "$LOCKFILE"
exit
}

# procmail-lockfile muss drauf sein
if lockfile -! -r 0 "$LOCKFILE"; then
echo "Flexbackup kontrollieren: laeuft mehrfach!" | mail -s
"Warnung: Flexbackup dreht durch" alert
exit
fi


# Erster Teil: Band laden (mehrfacher Versuch)
mtx -f /dev/sg1 status
sleep 30
mtx -f /dev/sg1 unload
sleep 30
ANZ=0

DAY="$(date +%u)"

case "$DAY" in
1) mtx -f /dev/sg1 load 1 ;;
2) mtx -f /dev/sg1 load 2 ;;
3) mtx -f /dev/sg1 load 3 ;;
4) mtx -f /dev/sg1 load 4 ;;
5) mtx -f /dev/sg1 load 5 ;;
6) mtx -f /dev/sg1 load 6 ;;
7) mtx -f /dev/sg1 load 7 ;;
esac
sleep 30
until mt -f /dev/st0 tell 2>> tape.log
do
printf " Versuch: %i " $ANZ
sleep 20
ANZ=`expr $ANZ + 1`
if [ $ANZ = 8 ]
then
break
fi
done
if [ $ANZ = 8 ]
then
echo "$(date) : Fehler, Kasette nicht richtig eingezogen" >> tape.log
tail -n 30 /root/tape.log | mail -s "Libra-Fehler" alert
exit
fi
echo "$(date) : Band wurde getauscht. Naechstes Band wurde eingelegt."
echo "$(date) : Band wurde getauscht. Naechstes Band wurde eingelegt."


tape.log





# Zweiter Teil

echo "$(date) : Das taegliche Backup wird durchgefuehrt..."
case "$DAY" in
1 | 2 | 3 | 4)
DESTINATION=backup
TYPE=full
;;
5) DESTINATION=backup
TYPE=full
;;
6) DESTINATION=full_s1
TYPE=full
;;
7) DESTINATION=full_s2
TYPE=full ;;
esac

#flexbackup -set "$DESTINATION" -"$TYPE"
flexbackup -set "$DESTINATION"
sleep 120
#flexbackup -toc
#sleep 120
mtx -f /dev/sg1 unload
sleep 60
echo "$(date) : Das Backup wurde durchgefuehrt."
echo "$(date) : Das Backup wurde durchgefuehrt." >> tape.log

#Dritter Teil -- naechstes Band vorbereiten:
#Baender zyklisch loeschen/formatieren!
#Montags das Band von Dienstag, Dienstags von Mittwoch usw. formatieren:

echo "$(date) : Das Band fuer den folgenden Tag wird vorbereitet..."
case "$DAY" in
1) mtx -f /dev/sg1 load 2;
sleep 120;
flexbackup -newtape;
sleep 120;
flexbackup -toc;
sleep 120;
mtx -f /dev/sg1 unload; ;;

2) mtx -f /dev/sg1 load 3;
sleep 120;
flexbackup -newtape;
sleep 120;
flexbackup -toc;
sleep 120;
mtx -f /dev/sg1 unload; ;;

3) mtx -f /dev/sg1 load 4;
sleep 120;
flexbackup -newtape;
sleep 120;
flexbackup -toc;
sleep 120;
mtx -f /dev/sg1 unload; ;;

4) mtx -f /dev/sg1 load 5;
sleep 120;
flexbackup -newtape;
sleep 120;
flexbackup -toc;
sleep 120;
mtx -f /dev/sg1 unload; ;;

5) mtx -f /dev/sg1 load 6;
sleep 120;
flexbackup -newtape;
sleep 120;
flexbackup -toc;
sleep 120;
mtx -f /dev/sg1 unload; ;;

6) mtx -f /dev/sg1 load 7;
sleep 120;
flexbackup -newtape;
sleep 120;
flexbackup -toc;
sleep 120;
mtx -f /dev/sg1 unload; ;;

7) mtx -f /dev/sg1 load 1;
sleep 120;
flexbackup -newtape;
sleep 120;
flexbackup -toc;
sleep 120;
mtx -f /dev/sg1 unload; ;;

*) echo "Falscher Wochentag?" ;;
esac

echo "$(date) : Das Band fuer den folgenden Tag wurde soeben formatiert."
echo "$(date) : Das Band fuer den folgenden Tag wurde soeben
formatiert." >> tape.log
echo


tape.log





trap cleanup EXIT TERM INT
#EOF
 

Lesen sie die antworten

#1 Hauke Laging
12/12/2007 - 18:14 | Warnen spam
Michael Hagedorn schrieb am Mittwoch 12 Dezember 2007 17:17:

Hallo.
Ich verstehe nicht, was an diesem Script nicht so will wie ich.
Stoße ich es von Hand an làuft alles bestens -- làuft es aber im
Cronjob, làuft es scheinbar nicht durch, sondern hört mitten drin
ohne weitere Warnungen auf. Wer kann mir verraten, wo da der Fehler
liegt.



Ruf es per cron doch mal so auf:

bash -vx /mein/script &>/meine/debugdatei


CU

Hauke
http://www.hauke-laging.de/ideen/
http://www.hauke-laging.de/software/
http://zeitstempel-signatur.hauke-laging.de/
Wie können 59.054.087 Leute nur so dumm sein?

Ähnliche fragen