Hallo, 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. Bis denne und vielen Dank Micha -- Encrypted eMail welcome! GnuPG/OpenPGP-Key: 0xC82CD70C. Fingerprint: BB76 0DED 1329 D3B7 04D0 F6BB 2033 3B11 C82C D70C
Hallo, 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. Schöne Grüße aus Bremen hartmut
On Son, 13 Apr 2003 at 13:04 (+0200), Hartmut Meyer wrote:
Hallo,
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. Zur Frage (Beispiel Mountpunkt /daten1): if ! mount | cut -f3 -d" " | grep -q "^/daten1$"; then mount /daten1 fi mount zeigt (wenn ohne Optionen aufgerufen) alle existierenden Mounts an, cut schneidet Feld 3 ab und grep prüft, ob der gesuchte Mountpunkt in der Liste ist. Der umount kann dann mit fast der gleichen Abfrage laufen, man muss nur die Positiv- statt der Negativabfrage nutzen: if mount | cut -f3 -d" " | grep -q "^/daten1$"; then umount /daten1 fi Alles nicht großartig getestet, zur Funktion siehe auch: man mount man cut man grep Jan
Hallo, 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.
mount zeigt (wenn ohne Optionen aufgerufen) alle existierenden Mounts an, cut schneidet Feld 3 ab und grep prüft, ob der gesuchte Mountpunkt in der Liste ist. Der umount kann dann mit fast der gleichen Abfrage laufen, man muss nur die Positiv- statt der Negativabfrage nutzen:
if mount | cut -f3 -d" " | grep -q "^/daten1$"; then umount /daten1 fi
Siehe oben. Schöne Grüße aus Bremen hartmut
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
Hallo, On Sun, 13 Apr 2003, Jan Trippler wrote:
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.
ACK soweit. Allerdings kann man auch _mehrfach_ mounten... /proc z.B. ;)
Zur Frage (Beispiel Mountpunkt /daten1): if ! mount | cut -f3 -d" " | grep -q "^/daten1$"; then mount /daten1 fi
mount zeigt (wenn ohne Optionen aufgerufen) alle existierenden Mounts an,
Einspruch. Nicht gut. mount bezieht sich nur auf die /etc/mtab, und die spiegelt nicht immer die Realitaet wieder. Besser /proc/mounts verwenden: if ! grep -q '^/dev/hdXY' /proc/mounts then mount /dev/hdXY fi Falls man lieber den mountpoint testen will: if ! grep -q '^[^ ]\+ /mountpoint ' /proc/mounts then mount /mountpoint fi -dnh -- [NTFS] it's the Not Trustworthy File System until all files are gone. Then it automagically switches to be the Nothing There File System. That's not a bug. That's a feature. -- Peter Eckhardt in dasr
On Son, 13 Apr 2003 at 18:10 (+0200), David Haller wrote: [gemountetes FS prüfen]
ACK soweit. Allerdings kann man auch _mehrfach_ mounten... /proc z.B. ;)
Zur Frage (Beispiel Mountpunkt /daten1): if ! mount | cut -f3 -d" " | grep -q "^/daten1$"; then mount /daten1 fi
mount zeigt (wenn ohne Optionen aufgerufen) alle existierenden Mounts an,
Einspruch. Nicht gut. mount bezieht sich nur auf die /etc/mtab, und die spiegelt nicht immer die Realitaet wieder. Besser /proc/mounts verwenden: [...]
Ich weiss nicht - ich habe noch nie erlebt, dass mount nicht stimmt, aber wahrscheinlich ist /proc zuverlässiger. Ich kann mich immer noch nicht daran gewöhnen, dass man unter Linux sozusagen *offiziell* Infos aus /proc zieht - ich habe *nixe erlebt, in denen /proc standardmäßig gar nicht gemountet war. Jan
Hallo, On Sun, 13 Apr 2003, Jan Trippler wrote:
On Son, 13 Apr 2003 at 18:10 (+0200), David Haller wrote: [gemountetes FS prüfen]
mount zeigt (wenn ohne Optionen aufgerufen) alle existierenden Mounts an,
Einspruch. Nicht gut. mount bezieht sich nur auf die /etc/mtab, und die spiegelt nicht immer die Realitaet wieder. Besser /proc/mounts verwenden: [...]
Ich weiss nicht - ich habe noch nie erlebt, dass mount nicht stimmt,
Mounte / (bzw. genauer: /etc) mal read-only, z.B. wenn du in den single-runlevel bootest (warum auch immer[2])... Dann kannst du froehlich mounten, mount zeigt davon nix an... Ist mir schon oefter, in unterschiedlichen Situationen passiert. -dnh [1] NMF [2] z.B. weil du /var umkopieren willst oder oder... -- [1] while zapfhahn [ traffic ]; do; zapfhahn (log traffic) | wirt | stift | bierdeckel(trinker); done; bierdeckel > awk (sum log) > invoice.txt -- Rainer Kersten in dasr
* Jan Trippler schrieb am 13.Apr.2003:
On Son, 13 Apr 2003 at 18:10 (+0200), David Haller wrote:
Einspruch. Nicht gut. mount bezieht sich nur auf die /etc/mtab, und die spiegelt nicht immer die Realitaet wieder. Besser /proc/mounts verwenden:
Ich weiss nicht - ich habe noch nie erlebt, dass mount nicht stimmt,
In dem Moment, wo / ro gemountet ist, kann /etc/mtab nicht stimmen, denn es ist ja nicht mehr möglich in /etc/mtab etwas zu verändern, z.B das / ro und nicht rw gemountet ist.
aber wahrscheinlich ist /proc zuverlässiger. Ich kann mich immer noch nicht daran gewöhnen, dass man unter Linux sozusagen *offiziell* Infos aus /proc zieht - ich habe *nixe erlebt, in denen /proc standardmäßig gar nicht gemountet war.
AFAIK kann man das bei Linux auch so machen. Probiere ich jetzt aber nicht aus. Bernd -- Bitte die Etikette beachten: http://www.suse-etikette.de.vu/etikette.html Bitte Realnamen angeben, kein Vollquoting, kein Html, PGP oder Visitenkarten benutzen. Signatur mit "-- " abtrennen, bei Antworten "Re: " voranstellen, sonst nichts. |Zufallssignatur 4
On Mon, 14 Apr 2003 at 09:31 (+0200), Bernd Brodesser wrote:
* Jan Trippler schrieb am 13.Apr.2003:
On Son, 13 Apr 2003 at 18:10 (+0200), David Haller wrote:
Einspruch. Nicht gut. mount bezieht sich nur auf die /etc/mtab, und die spiegelt nicht immer die Realitaet wieder. Besser /proc/mounts verwenden:
Ich weiss nicht - ich habe noch nie erlebt, dass mount nicht stimmt,
In dem Moment, wo / ro gemountet ist, kann /etc/mtab nicht stimmen, denn es ist ja nicht mehr möglich in /etc/mtab etwas zu verändern, z.B das / ro und nicht rw gemountet ist.
Ja, das ist mir auch schon bei Davids Mail klargeworden. OK, in diesem Fall sollte man auf /proc ausweichen. Das ist aber doch nicht der normale Fall, oder gibt es Situationen, wo man / readonly im Produktionsbetrieb mountet? Jan
Hallo, On Mon, 14 Apr 2003, Jan Trippler wrote:
On Mon, 14 Apr 2003 at 09:31 (+0200), Bernd Brodesser wrote:
* Jan Trippler schrieb am 13.Apr.2003:
On Son, 13 Apr 2003 at 18:10 (+0200), David Haller wrote:
Einspruch. Nicht gut. mount bezieht sich nur auf die /etc/mtab, und die spiegelt nicht immer die Realitaet wieder. Besser /proc/mounts verwenden:
Ich weiss nicht - ich habe noch nie erlebt, dass mount nicht stimmt,
In dem Moment, wo / ro gemountet ist, kann /etc/mtab nicht stimmen, denn es ist ja nicht mehr möglich in /etc/mtab etwas zu verändern, z.B das / ro und nicht rw gemountet ist.
Ja, das ist mir auch schon bei Davids Mail klargeworden. OK, in diesem Fall sollte man auf /proc ausweichen. Das ist aber doch nicht der normale Fall, oder gibt es Situationen, wo man / readonly im Produktionsbetrieb mountet?
Man sollte doch IMO soviel wie moeglich ro mounten... Also eigentlich reicht es /var (mit nem umgebogenen /tmp und /usr/tmp) und /home beschreibbar zu mounten. Alles andere kann doch im Normalbetrieb read-only gemountet werden, oder? Und generell: was spricht dagegen /proc/mounts auszuwerten? Fuer mich ist jedenfalls die Tatsache, dass /etc/mtab und somit die Ausgabe von mount falsch sein _kann_, ein hinreichender Grund, stattdessen grundsaetzlich /proc/mounts auszuwerten. Zumal /proc/mounts eben im Textformat vorliegt und nicht, wie anderes unter /proc, nur in einem binaeren Format. Und nebenbei, /proc/mounts zu lesen ist vermutlich obendrein noch schneller als die /etc/mtab zu lesen... Jedenfalls: ich bin inzwischen mehrfach in die Falle mit /etc/mtab bzw. 'mount' getappt und habe nicht vor das weiterhin zu tun. Erst recht nicht, wenn ich in nem script feststellen will, ob $dev gemountet ist. Ich ueberlege sowieso schon, mount durch ein shell-script zu ersetzen: ==== ungetestet nur zur Illustration der Idee ==== #!/bin/sh if test $# -eq 0 then exec /bin/cat /proc/mounts else exec /bin/mount "$@" fi ==== Siehe die (nicht-zufalls) Sig! -dnh PS: ja, ich halte das fuer eine Art "Bug" von 'mount' nur /etc/mtab auszuwerten... Und das ist zumindest bei mir lt. strace -efile hier der Fall. -- In /etc steht, was Du denkst. In /proc steht, was das OS denkt. [Thomas Blum in doc]
Michael Hoeller schrieb:
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?
Entweder einfach einen Mount-Versuch starten und die dann auftretende Fehlermeldung ignorieren, falls die Partition schon gemountet ist, oder eben die Ausgabe von "mount" bzw. "cat /etc/mtab" auswerten und nur bei Bedarf mounten.
Und dann auch rückwärts, umount nur wenn's gemountet ist.
Siehe oben. Einfach einen Umount-Versuch starten und Fehlermeldung ignorieren oder eben die Ausgaben (siehe oben) auswerten. Gruesse, Thomson -- Thomas Hertweck, Dipl.-Geophys., GPI Universitaet Karlsruhe === First they ignore you, then they laugh at you, then === === they fight you, then you win. (M. Ghandi) ===
participants (6)
-
B.Brodesser@t-online.de
-
David Haller
-
Hartmut Meyer
-
Jan.Trippler@t-online.de
-
MichaelHoeller@t-online.de
-
Thomas Hertweck