Comment vérifier un répertoire particulier est monté sur la machine Linux. Par exemple, il y a un dossier nommé test, je veux vérifier s'il est monté ou non.
Si vous voulez vérifier qu'il s'agit du point de montage d'un système de fichiers, c'est à cela que sert la commande mountpoint
(sur la plupart des systèmes Linux):
if mountpoint -q -- "$dir"; then
printf '%s\n' "$dir is a mount point"
fi
Pour ce faire, il vérifie si .
Et ..
Ont le même numéro de périphérique (st_dev
Dans stat()
résultat). Donc, si vous n'avez pas la commande mountpoint
, vous pouvez faire:
Perl -le '$dir = shift; exit(1) unless
(@a = stat "$dir/." and @b = stat "$dir/.." and
($a[0] != $b[0] || $a[1] == $b[1]))' "$dir"
Comme mountpoint
, il retournera vrai pour /
Même si /
N'est pas un point de montage (comme dans une prison chroot
), ou false
pour un point de montage d'un bind montage du même système de fichiers en lui-même.
Contrairement à mountpoint
, pour les liens symboliques, il vérifiera si la cible du lien symbolique est un point de montage.
Comme HalosGhost le mentionne dans les commentaires, les répertoires ne sont pas nécessairement montés en soi. Ils sont plutôt présents sur un appareil qui a été monté. Pour vérifier cela, vous pouvez utiliser la commande df
comme ceci:
$ df -h /boot/
Filesystem Size Used Avail Use% Mounted on
/dev/hda1 99M 55M 40M 59% /boot
Ici, nous pouvons voir que le répertoire /boot
fait partie du système de fichiers, /dev/hda1
. Il s'agit d'un appareil physique, sur le système, un disque dur.
Vous pouvez également y parvenir un peu différemment en utilisant la commande mount
pour interroger le système pour voir quels périphériques sont actuellement montés:
$ mount | column -t
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/hda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
/dev/mapper/lvm--raid-lvm0 on /export/raid1 type ext3 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
nfsd on /proc/fs/nfsd type nfsd (rw)
Ici, vous pouvez voir le type de périphérique et le type de systèmes de fichiers actuellement montés sur votre système. La 3ème colonne indique où ils sont montés sur le système dans son système de fichiers.
Eh bien, comme d'autres l'ont dit, vous devriez modifier votre question et clarifier ce que vous essayez de réaliser. Pour autant que je sache, vous devez vérifier si un répertoire est monté sur un périphérique particulier. Vous pouvez également essayer quelque chose comme ci-dessous.
df -P /test | tail -1 | cut -d' ' -f 1
Donc, fondamentalement, la commande ci-dessus vous permet de connaître le point de montage du répertoire si le périphérique est monté sur un répertoire.
Je cherchais la même question lorsque je voulais vérifier le montage d'un nouveau système de fichiers XFS.
J'ai trouvé la commande findmnt : findmnt /directoryname
[root@CentOS7-Server /]# findmnt /mnt
TARGET SOURCE FSTYPE OPTIONS
/mnt /dev/sdb1 xfs rw,relatime,seclabel,attr2,inode64,noquota
[root@CentOS7-Server /]#
Agréable et court Python one-liner peut être construit sur la base de réponse de Gilles :
$ python -c 'import os,sys;print(os.path.ismount(sys.argv[1]))' /mnt/HDD
True
$ python -c 'import os,sys;print(os.path.ismount(sys.argv[1]))' /etc
False
J'ai fait une implémentation personnalisée de la commande mountpoint
en Python, qui analyse /proc/self/mounts
fichier. Un peu le même comportement que mount
dans la réponse de Stéphane, sauf que la commande analyse /proc/self/mountinfo
. L'utilisation est très simple: is_mountpoint.py /path/to/dir
.
#!/usr/bin/env python3
from os import path
import sys
def main():
if not sys.argv[1]:
print('Missing a path')
sys.exit(1)
full_path = path.realpath(sys.argv[1])
with open('/proc/self/mounts') as mounts:
print
for line in mounts:
if full_path in line:
print(full_path,' is mountpoint')
sys.exit(0)
print(full_path,' is not a mountpoint')
sys.exit(1)
if __name__ == '__main__':
main()
Essai:
$ python3 ./is_mountpoint.py /mnt/HDD
/mnt/HDD is mountpoint
$ lsblk | grep HDD
└─sdb6 8:22 0 405.3G 0 part /mnt/HDD
$ python3 ./is_mountpoint.py $HOME
/home/xieerqi is not a mountpoint
Votre question est un peu confuse, mais je suppose que l'une des façons de vérifier que: mount |awk '{print $3}'| grep -w <your_directory>
. Si la sortie est vide, aucun périphérique n'est monté dans le répertoire. S'il n'est pas vide, un périphérique est monté dans le répertoire. Une autre façon consiste à utiliser df <your_directory>
. Si le dernier champ est égal à votre nom de répertoire - alors certains périphériques y sont montés.