특정 디렉토리가 마운트 지점인지 확인하는 방법은 무엇입니까? [복사]

특정 디렉토리가 마운트 지점인지 확인하는 방법은 무엇입니까? [복사]

특정 디렉토리가 마운트 지점인지 확인하는 방법은 무엇입니까? 예를 들어, 이라는 이름의 폴더가 있는데 /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

새로운 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 한 줄짜리 코드는 다음을 기반으로 구축될 수 있습니다.자일스의 대답:

$ 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

관련 정보