특정 디렉토리가 마운트 지점인지 확인하는 방법은 무엇입니까? 예를 들어, 이라는 이름의 폴더가 있는데 /test
그것이 마운트 지점인지 확인하고 싶습니다.
답변1
파일 시스템의 마운트 지점을 확인하려면 mountpoint
다음 명령을 사용할 수 있습니다(대부분의 Linux 기반 시스템에서).
if mountpoint -q -- "$dir"; then
printf '%s\n' "$dir is a mount point"
fi
합계에 동일한 장치 번호( 결과 에서 )가 .
있는지 확인하여 이를 수행합니다 . 따라서 해당 명령이 없으면 다음을 수행할 수 있습니다...
st_dev
stat()
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"
마찬가지로, 마운트 지점이 아니더라도(예: 감옥에서) mountpoint
true를 반환합니다./
/
chroot
false
제본동일한 파일 시스템을 자체적으로 마운트합니다.
반면에 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