Am Mittwoch, den 02.05.2012, 21:46 +0200 schrieb Markus Hochholdinger: > Am 27.04.2012 um 13:59 Uhr schrieb Werner Holtfreter <Holtfreter_at_gmx.de>: > > wie kann ich in einem Linux-Shell-Script prüfen, ob an > > /dev/disk/by-path/pci-0000:00:09.0-scsi-3:0:0:0 > > eine Festplatte steckt? (In diesem Fall soll ein Backup-Script laufen.) > > ich verwende für solche Fälle gerne blockdev: > blockdev --getsize64 /dev/disk/by-path/pci-0000:00:09.0-scsi-3:0:0:0 > > Wenn das mit Exit-Code 0 und einem Wert größer 0 auf stdout antwortet, ist > sehr wahrscheinlich ein Blockdevice dahinter angeschlossen. Problematisch ist, > dass die Antwort auch im Cache landet und nach erneutem Aufruf garnichtmehr > direkt die Festplatte gefragt wird. > > Alternativ könnte man noch udev fragen, aber da Du ja davon ausgehst, dass > "disk/by-path" da ist (zumindest nehme ich das an), die Festplatte aber evtl. > nicht, dann hat es udev auch nicht mitbekommen. > > Evtl. willst Du aber auch in /sys/block/ nachschauen? Dort kannst Du z.B. in > /sys/block/sdX/size auch die Größe abfragen. > > Wenn ich wüsste, wieso Du genau auf /dev/disk/by-path/pci-0000:00:09.0- > scsi-3:0:0:0 losgehst, kann ich Dir vlt. besser weiterhelfen? Der Pfad ist > auch nur ein symbolischer Link zu /dev/sdX welcher über udev angelegt wird. Eine interne Festplatte soll auf eine SATA-Festplatten im trägerlosen Rahmen kopiert werden, *WENN* sie im Rechner steckt. Die Ziel-Festplatte kann wechseln, nur der SATA-Anschluss bleibt immer der gleiche. Nach meiner Kenntnis wird /dev/sdX dynamisch vergeben und kann sich durch Wettlaufeffekte beim Booten ändern. Ganz sicher ändert sie sich, wenn die Zahl der eingebauten Festplatten variiert, was hier ständig vorkommt. Die einzig zuverlässige Art der Adressierung schien mir daher by-path zu sein. Naheliegender Weise könnte ich einfach ein paar Bytes von der Festplatte lesen und mit der Fehlerbehandlung verzweigen. Ich frage nur, ob es einen einfachen, besseren Weg gibt. Im Idealfall wird dabei auch eine vorhandene defekte Platte als vorhanden erkannt, um nicht vorhanden und defekt unterscheiden zu können. Hier das bisher genutzte Script. Interessant vielleicht, das man auch cp statt dd nehmen kann! #! /bin/sh -e quelle="/dev/disk/by-path/pci-0000:00:09.0-scsi-2:0:0:0" ziel="/dev/disk/by-path/pci-0000:00:09.0-scsi-3:0:0:0" /sbin/hdparm -S 60 $ziel # in 5-s-Einheiten, 5 * 120 = 600 s = 10 min # in 5-s-Einheiten, 5 * 60 = 300 s = 5 min echo "dauert 126 min" echo $(date -I;date +%T)" Festplatten werden jetzt kopiert" nice -n 19 ionice -c 3 cp $quelle $ziel echo $(date -I;date +%T)" Festplatten werden jetzt verglichen" nice -n 19 ionice -c 3 diff -s $quelle $ziel /sbin/hdparm -y $ziel sleep 25 aplay /usr/share/sounds/speech-dispatcher/test.wav 2> /dev/null echo $(date -I;date +%T)" Wechsellaufwerk wurden angehalten, FERTIG" -- Viele Grüße Werner Holtfreter -- UUGRN e.V. http://www.uugrn.org/ http://mailman.uugrn.org/mailman/listinfo/uugrn Wiki: https://wiki.uugrn.org/UUGRN:Mailingliste Archiv: http://lists.uugrn.org/Empfangen am 02.05.2012
Dieses Archiv wurde generiert von hypermail 2.2.0 : 02.05.2012 CEST