特定のディレクトリがマウントポイントであるかどうかを確認するには? [コピー]

特定のディレクトリがマウントポイントであるかどうかを確認するには? [コピー]

特定のディレクトリがマウントポイントであるかどうかを確認するには?たとえば、という名前のフォルダがあり、/testそれがマウントポイントであることを確認したいと思います。

答え1

ファイルシステムのマウントポイントを確認するには、mountpoint次のコマンドを使用できます(ほとんどのLinuxベースのシステムでは)。

if mountpoint -q -- "$dir"; then
  printf '%s\n' "$dir is a mount point"
fi

合計に同じデバイス番号(結果から)が.あることを確認してください。したがって、そのコマンドがない場合は、次のことができます。..st_devstat()mountpoint

perl -le '$dir = shift; exit(1) unless
  (@a = stat "$dir/." and @b = stat "$dir/.." and
  ($a[0] != $b[0] || $a[1] == $b[1]))' "$dir"

同様に、マウントポイントでなくても(たとえば、刑務所で)mountpointtrueを返します。//chrootfalse製本同じファイルシステムを独自にマウントします。

一方、mountpointシンボリックリンクの場合、シンボリックリンクのターゲットがマウントポイントであることを確認します。

答え2

HalosGhostがコメントで述べたように、ディレクトリ自体が必ずしもマウントされるわけではありません。代わりにインストールされたデバイスに存在します。これを確認するには、df次のコマンドを使用できます。

$ df -h /boot/
Filesystem            Size  Used Avail Use% Mounted on
/dev/hda1              99M   55M   40M  59% /boot

ここでは、ディレクトリがファイル/bootシステムの一部であることがわかります/dev/hda1。これはシステムの物理デバイスであるHDDです。

mount次のコマンドを使用して、システムに現在インストールされているデバイスを照会して、この問題を少し異なる方法で解決することもできます。

$ 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)

ここでは、現在システムにインストールされているデバイスタイプとファイルシステムタイプを表示できます。 3番目の列は、システムファイルシステムにインストールされている場所を示しています。

答え3

新しいXFSファイルシステムのインストールを確認しようとしても、同じ問題を探していました。

命令が見つかりました。発見する:findmnt /directoryname

[root@CentOS7-Server /]# findmnt /mnt
TARGET SOURCE    FSTYPE OPTIONS
/mnt   /dev/sdb1 xfs    rw,relatime,seclabel,attr2,inode64,noquota
[root@CentOS7-Server /]# 

答え4

素晴らしく短いPythonの1行コードは、以下に基づいて構築できます。ザイルズの答え:

$ 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

mountpoint/proc/self/mountsファイルを解析するPythonコマンドの実装をカスタマイズしました。mountコマンドを除いて、Stephaneの答えと同様の動作です/proc/self/mountinfo。使用法は非常に簡単です: 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()

テスト実行:

$ 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

関連情報