Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

tester qu'une partoche est montée

8 réponses
Avatar
Une bévue
j'ai un warning quand je tente de monter une partition qui l'est déjà :

mount: /dev/sdb9 est déjà monté ou /mnt/F32 est occupé
mount: selon mtab /dev/sdb9 est déjà monté sur /mnt/F32

j'aimerais bien améliorer mon script "brut de fonderie" est tester que,
par exemple, /mnt/F32 n'est pas déjà monté.

Comment fait-on ?

--
Une bévue

8 réponses

Avatar
TiChou
Dans le message <news:,
*Une bévue * tapota sur f.c.o.unix :

j'ai un warning quand je tente de monter une partition qui l'est déjà :

mount: /dev/sdb9 est déjà monté ou /mnt/F32 est occupé
mount: selon mtab /dev/sdb9 est déjà monté sur /mnt/F32

j'aimerais bien améliorer mon script "brut de fonderie" est tester que,
par exemple, /mnt/F32 n'est pas déjà monté.

Comment fait-on ?


Un début de réponse vous est déjà donné dans le warning... ;-)

Sous Linux, ce qui est votre cas, man mount :

mount [-l] [-t type]
lists all mounted file systems (of type type).
The option -l adds the (ext2, ext3 and XFS)
labels in this listing.

[...]

The programs mount and umount maintain a list
of currently mounted file systems in the file
/etc/mtab. If no arguments are given to mount,
this list is printed.

When the proc filesystem is mounted (say at
/proc), the files /etc/mtab and /proc/mounts
have very similar contents. The former has
somewhat more information, such as the mount
options used, but is not necessarily up-to-date
(cf. the -n option below). It is possible to
replace /etc/mtab by a symbolic link to
/proc/mounts, and especially when you have very
large numbers of mounts things will be much
faster with that symlink, but some information
is lost that way, and in particular working
with the loop device will be less convenient,
and using the "user" option will fail.

[...]

FILES
/etc/mtab table of mounted file systems

$ mount | grep -q /mnt/F32

ou :

$ grep -q /mnt/F32 /etc/mtab

ou bien :

$ grep -q /mnt/F32 /proc/mounts

et ensuite test de la variable du code de retour :

$ echo $?

--
TiChou

Avatar
Une bévue
Le Sat, 17 Dec 2005 15:56:54 +0100, TiChou a écrit :

/etc/mtab table of mounted file systems

$ mount | grep -q /mnt/F32

ou :

$ grep -q /mnt/F32 /etc/mtab

ou bien :

$ grep -q /mnt/F32 /proc/mounts

et ensuite test de la variable du code de retour :

$ echo $?



ok, merci beaucoup, j'ai fait ça :
if ! mount | grep -q $vfat; then
mount $vfat ;
fi

la syntaxe de bash a qq subtilités...

qq fois mount ne veut pas démonter en me disant que /mnt/F32 est occupé
ou qqc dans le genre.
je suppose qu'une appli comme konqueror a ouvert un dossier de /mnt/F32,
j'image qu'il y a un lock qqpart que l'on peut tester aussi ?

--
Une bévue

Avatar
R12y
On Sat, 17 Dec 2005 16:46:15 +0100, Une bévue wrote:

j'image qu'il y a un lock qqpart que l'on peut tester aussi ?


avec lsof, par exemple.

--
Telephone portable "intelligent" (SmartPhone) GSM, GPRS,...
Il est sous Linux, ne coute pas trop cher,...
http://www.it2l.com/product_info.php?cPath‘&products_idE6

Avatar
Pascal Bourguignon
Une bévue writes:

j'ai un warning quand je tente de monter une partition qui l'est déjà :

mount: /dev/sdb9 est déjà monté ou /mnt/F32 est occupé
mount: selon mtab /dev/sdb9 est déjà monté sur /mnt/F32

j'aimerais bien améliorer mon script "brut de fonderie" est tester que,
par exemple, /mnt/F32 n'est pas déjà monté.

Comment fait-on ?


On ne fait pas!

Entre le moment où tu teste si une partition est montée et le moment
où tu la monte, un autre utilisateur ou un autre processus peut
l'avoir montée! Alors tu obtiendras la même erreur.

De même si tu voulais la démonter.

Seulement dans le cas où tu ne veux ni la monter, ni la démonter
pourras tu tester si elle l'est.


Donc, utiliser par exemple:


mount /dev/sdb9 /mnt/F32 >/tmp/$$.mount-output 2>&1
mount_status=$?
if [ $mount_status -eq 0 ] ; then
echo 'Bon, elle n'était pas montée, et on l'a montée.'
else
if grep -q -s 'already mounted' /tmp/$$.mount-output ; then
echo 'Ah, ah! Elle est déjà montée.'
else
cat /tmp/$$.mount-output
exit $mount_status
fi
fi
# post condition: la partition est montée.
faire_quequechose_avec /mnt/F32



--
__Pascal Bourguignon__ http://www.informatimago.com/
The rule for today:
Touch my tail, I shred your hand.
New rule tomorrow.

Avatar
Une bévue
Le Sat, 17 Dec 2005 18:12:20 +0100, Pascal Bourguignon a écrit :

On ne fait pas!


réponse on ne peut plus claire, bravo et merci ;-)

Entre le moment où tu teste si une partition est montée et le moment où
tu la monte, un autre utilisateur ou un autre processus peut l'avoir
montée! Alors tu obtiendras la même erreur.


je raisonne comme si tout était instantanné )))

De même si tu voulais la démonter.

Seulement dans le cas où tu ne veux ni la monter, ni la démonter pourras
tu tester si elle l'est.


Donc, utiliser par exemple:


mount /dev/sdb9 /mnt/F32 >/tmp/$$.mount-output 2>&1 mount_status=$?
if [ $mount_status -eq 0 ] ; then
echo 'Bon, elle n'était pas montée, et on l'a montée.'
else
if grep -q -s 'already mounted' /tmp/$$.mount-output ; then
echo 'Ah, ah! Elle est déjà montée.'
else
cat /tmp/$$.mount-output
exit $mount_status
fi
fi
# post condition: la partition est montée. faire_quequechose_avec
/mnt/F32


ok, pigé.
--
Une bévue

Avatar
Une bévue
Le Sat, 17 Dec 2005 17:05:03 +0100, R12y a écrit :

avec lsof, par exemple.
ok, merci, le man est TRES bavard à ce sujet )))

--
Une bévue

Avatar
DINH Viêt Hoà

mount /dev/sdb9 /mnt/F32 >/tmp/$$.mount-output 2>&1
mount_status=$?
if [ $mount_status -eq 0 ] ; then
echo 'Bon, elle n'était pas montée, et on l'a montée.'
else
if grep -q -s 'already mounted' /tmp/$$.mount-output ; then
echo 'Ah, ah! Elle est déjà montée.'
else
cat /tmp/$$.mount-output
exit $mount_status
fi
fi


de même, on peut te l'avoir démontée entre-temps.

# post condition: la partition est montée.
faire_quequechose_avec /mnt/F32


pour répondre à la question initiale, il me semble que 'mount' donne la
liste des volumes montés sur la plupart des systèmes Unix.

--
DINH V. Hoa,

- "Tiens, tu te rappliques avec l'Ibanez ?"
- "Mais vous allez faire quoi avec de la libanaise ?" -- Elodie

Avatar
R12y
mount: /dev/sdb9 est déjà monté ou /mnt/F32 est occupé
mount: selon mtab /dev/sdb9 est déjà monté sur /mnt/F32
j'aimerais bien améliorer mon script "brut de fonderie" est tester que,
par exemple, /mnt/F32 n'est pas déjà monté.
Comment fait-on ?
On ne fait pas!

Entre le moment où tu teste si une partition est montée et le moment
où tu la monte, un autre utilisateur ou un autre processus peut
l'avoir montée! Alors tu obtiendras la même erreur.
[...]

Donc, utiliser par exemple:


<mode Dimanche>
Euh...
Y a pas des "Exception" en shell?

try:
mount -t vfat /mnt/F32
except:
pass

Oui, je découvre les exceptions... c'est pratique ces machins là.
On devrait en faire une régle... (régle, exception,...)
ça fait rire personne? bon ben je sors...
</>

--
Telephone portable "intelligent" (SmartPhone) GSM, GPRS,...
Il est sous Linux, ne coute pas trop cher,...
http://www.it2l.com/product_info.php?cPath‘&products_idE6