On Son, 13 Apr 2003 at 19:22 (+0200), Hartmut Meyer wrote:
Am Sonntag, 13. April 2003 14:00 schrieb Jan Trippler:
On Son, 13 Apr 2003 at 13:04 (+0200), Hartmut Meyer wrote:
Am Sonntag, 13. April 2003 12:27 schrieb Michael Hoeller:
ich habe hier ein Script das eine Partition mountet das soll aber nur geschehen wenn dieses noch nicht gemountet ist. Wie kann ich das am besten Bewerkstelligen?
Und dann auch rückwärts, umount nur wenn's gemountet ist.
Ich würd mir keinen Kopf machen. Einfach Fehlermeldungen ignorieren und gut.
Da muss ich mal wieder Einspruch erheben. Fehlermeldung ignorieren ist nie gut, sie kann ja auch andere Ursachen haben (fehlende Berechtigung oder fehlender Mountpunkt oder kaputtes FS oder ... - oder beim umount ein *resource busy* ...). Vor allem in Scripts, die womöglich noch ohne Interaktion ablaufen, ist das IMHO total daneben.
Hast im Prinzip natürlich völlig recht, aber ...
Zur Frage (Beispiel Mountpunkt /daten1): if ! mount | cut -f3 -d" " | grep -q "^/daten1$"; then mount /daten1 fi
Damit fängst du auch keinen der von dir oben genannten Fehler ab ;-)
Du vermeidest nur, dass ein mount Versuch auf ein bereits gemountetes Verzeichnis gemacht wird. Aber genau dieser Fall ist nun wirklich unkritisch. Deshalb würde ich statt dessen einfach _diese_ Fehlermeldung in Kauf nehmen und bewusst ignorieren.
Das ist auch gar nicht das Ziel. Das Ziel ist, dass eine Fehlermeldung (bzw. in einem Script besser ein Returncode != 0) tatsächlich einen Fehler bedeutet, also das Fehlschlagen des mount. Wie kritisch oder unkritisch eine Fehlersituation ist, ist dabei völlig nebensächlich, es geht darum, eine saubere Ablaufsteuerung im Script zu haben. Wenn ich aufbauend auf einem mount eine Aktion (z. B. ein Backup) durchführen will, muss ich vorher wissen, dass der mount auch durchgelaufen ist. Also muss ich mich auch darauf verlassen, dass ein mount-Fehler tatsächlich ein Fehler ist, also das Dateisystem _nicht_ gemountet ist (bzw. am Schluss auch wieder ausgehängt ist - z. B. um ein irrtümliches Überschreiben zu verhindern). Ansonsten habe ich das Problem, dass entweder das Script nicht durchläuft, obwohl das FS gemountet ist, oder aber (wenn ich Fehler ignoriere) das z. B. root-FS befüllt wird. Natürlich kann ich nach dem mount auch prüfen, ob das FS gemountet ist, aber das läuft im Endeffekt auf das Gleiche raus, als wenn ich es gleich prüfe. Nochmal: Sicher kann man interaktiv in einer Shell auf einen Fehlercheck verzichten - man sieht ja, was passiert. In Scripts sollte man _immer_ dafür sorgen, dass eine Fehlermeldung tatsächlich durch einen Fehler verursacht wird. Alles andere ist unsauber. Jan