[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Bash Hintergrundprozesse
[Thread Prev] | [Thread Next]
- Subject: Re: Bash Hintergrundprozesse
- From: Werner Holtfreter <Holtfreter@xxxxxx>
- Date: Wed, 14 Dec 2005 01:00:20 +0100
- To: uugrn@xxxxxxxxxxxxxxx
Am Samstag, 10. Dezember 2005 03:10 schrieb Juergen Unger: > > Doch wie kann ich erreichen, dass der Test in "if" erst > > ausgefuehrt wird, wenn sowohl qsum als auch zsum fertig > > berechnet sind? > > mit dem Shell-Cmd 'wait' geht das: > | cksum ${quelle} > quelle.chk & > | cksum ${ziel} > ziel.chk & > | > | wait > | > | qsum=$(cat quelle.chk) > | zsum=$(cat ziel.chk) > | > | if [ ${qsum} = ${zsum} ]; then > | echo "OK" > | else > | echo "FEHLER" > | fi Danke Juergen, wait ist genau das richtige! Danke auch fuer deine Korrektur, mit der du mich darauf aufmerksam gemacht hast, dass mein Ausdruck qsum=$(cksum $quelle) & nicht als Hintergrundprozess funktioniert (warum auch immer) und daher eine Datei zwischengeschaltet werden muss. Als Vordergrundprozess funktioniert der Ausdruck aber, ich habe deshalb beide Varianten im Skript gelassen, dessen getestete Version ich nachfolgend wiedergebe - fuer alle, die den paranoiden Weg der Festplattenkopie bevorzugen: #! /bin/sh # VORBEREITUNG: # Rescue-System von CD1 starten (Parameter nicht erforderlich) # mount /dev/fd0 /media/floppy/ # /media/floppy/kopiefp quelle=/dev/hde ziel=/dev/hdg protokoll=/media/floppy/protokoll.txt #hdparm -d $quelle #hdparm -d $ziel echo "Anschlusstest Quelle $quelle" dd if=$quelle of=/dev/null count=10000 || exit 1 echo "Anschlusstest Ziel $ziel" dd if=$ziel of=/dev/null count=10000 || exit 1 echo "Gut, die Festplatten sind richtig angeschlossen." echo "Jetzt wird die Festplatte kopiert und geprueft." echo "Die Meldungen werden auf den Bildschirm UND" echo "auf Diskette geschrieben, daher kann der Bildschirm" echo "ausgeschaltet werden." echo "Bei fehlerfreiem Ende wird der Rechner heruntergefahren." echo "" echo "Voraussichtliche Zeitdauer, DMA: aus ein ein/parallel" echo "" echo " kopieren: 2:30 0:37 0:37" echo " pruefen a: 1:31 0:26 0:24" echo " pruefen b: 1:31 0:26 0:28" echo " Summe: 5:33 1:25 1:05" echo "" echo $(date -I;date +%T) | tee -a $protokoll dd if=$quelle of=$ziel bs=1M #Zeile auskommentieren, um Fehlererkennung zu testen echo $(date -I;date +%T) | tee -a $protokoll md5sum $quelle > quelle.chk & zsum=$(md5sum $ziel) wait qsum=$(cat quelle.chk) echo $(date -I;date +%T) | tee -a $protokoll echo $qsum | tee -a $protokoll echo $zsum | tee -a $protokoll qsum=${qsum%%/*} zsum=${zsum%%/*} #echo $qsum | tee -a $protokoll #echo $zsum | tee -a $protokoll if [ "$qsum" = "$zsum" ]; then echo " OK" | tee -a $protokoll echo "" | tee -a $protokoll shutdown -h now else echo -e " FEHLER #################\a" | tee -a $protokoll echo "" | tee -a $protokoll exit 1 fi -- Viele Gruesse Werner Holtfreter