주어진 경로가 바인드 마운트 포인트 (Linux에서)인지 확인하는 방법을 찾고 있습니다. 정기적 인 마운트 지점을 탐지하는 표준 기술은 작동하지 않는 것 같습니다. 심지어 mountpoint 명령은 바인드 마운트를 감지하지 못합니다.리눅스에서 바인드 마운트를 감지했습니다.
답변
바인드 마운트가 마운트 공간에서 일종의 "하드 링크"(파일 계층 구조가 아님) 때문에 이해할 수 없습니다 (어쩌면 /etc/mtab
또는 /etc/fstab
제외).), 소스 마운트 지점과 목표 마운트 지점을 구별 할 수있는 방법은 없습니다 (일단 바인드 마운트가 발생하면).
왜 그런 질문을합니까? 바인드 마운트 (IMHO)보기의 응용 프로그램의 관점에서 그런 일이
그리고 mountpoint
(그렇지 않으면 당신은 그들이 디렉토리에 대한 possible-있는 드문 경우에 심볼릭 링크 - 또는 심지어 하드 링크를 사용하는 것) 숨기기에 주로 유용하는
% grep /home /etc/fstab
UUID=000008-0003-000c-9ecd-0f1a /home ext3 defaults 0 2
% grep /usr/src /etc/fstab
/home/Src /usr/src none bind 0 0
% mountpoint /usr/src
/usr/src is a mountpoint
% mountpoint /home/Src
/home/Src is not a mountpoint
strace
이 mountpoint
을 -ing으로 내가 찾아 그것을 /usr/src
&같은 디렉토리에 lstat
, stat
및 fstat
콜을하고 있음 : 귀하의 질문에 뭔가를 볼 것에 그냥 감사를 발견3210
(11 월 (2016) :
도 /proc/mounts
예를 들어, 참조 추가 난 당신이 원하는 일에 대해 매우 명확하지 않다 proc(5) 및 nftw(3)
마운트 포인트가 사용하는 기술은 l/stat path와 path/..를 찾은 다음 다른 장치 ID 나 동일한 inode를 찾는 것입니다. fstat 호출에 대해서는 확실하지 않지만 마운트 포인트 검사와 직접 관련이 없을 수도 있습니다. '이유'에 관해서. 당신은 그들이 사용되는 것에 대해 좋은 지적을하고 있으며 일반 장치와 동일한 장치 내에서 링크 마운트를 고려하기로 결정했습니다. 그것이 말하게되면서, 나는 사람이 그들을 발견하는 방법에 관해서 아직도 흥미있다. 현재 내가 찾은 최선의 방법은/proc/mounts 및/etc/mtab을 검사하여 정보를 얻는 것입니다. – Shamless
$ mount | grep bind
,이 명령은 사용자의 필요에 맞게입니까?
이것은 작동하지 않습니다. –
경로의 장치 ID와 부모의 장치 ID를 검사하여 경로가 마운트 지점인지 여부를 감지 할 수 있습니다 (마운트 된 파일 시스템이 상위 디렉토리의 장치 ID와 다른 경우). 디렉토리 자체에!). 그 중 하나는 바인드 마운트입니다
$ cut -d ' ' -f2 /proc/mounts | xargs stat -c '%d %n'
18 /sys
4 /proc
6 /dev
19 /dev/pts
20 /run
2049/
7 /sys/kernel/security
21 /dev/shm
22 /run/lock
23 /sys/fs/cgroup
24 /sys/fs/cgroup/unified
25 /sys/fs/cgroup/systemd
26 /sys/fs/pstore
27 /sys/fs/cgroup/perf_event
28 /sys/fs/cgroup/cpu,cpuacct
29 /sys/fs/cgroup/pids
30 /sys/fs/cgroup/blkio
31 /sys/fs/cgroup/memory
32 /sys/fs/cgroup/cpuset
33 /sys/fs/cgroup/net_cls,net_prio
34 /sys/fs/cgroup/devices
35 /sys/fs/cgroup/freezer
39 /proc/sys/fs/binfmt_misc
17 /dev/mqueue
8 /sys/kernel/debug
37 /dev/hugepages
2066 /home
39 /proc/sys/fs/binfmt_misc
44 /run/user/1000
45 /sys/fs/fuse/connections
2049 /run/schroot/mount/my-chroot-cb43935e-0812-45ea-af4f-965a1e2de91d
4 /run/schroot/mount/my-chroot-cb43935e-0812-45ea-af4f-965a1e2de91d/proc
18 /run/schroot/mount/my-chroot-cb43935e-0812-45ea-af4f-965a1e2de91d/sys
6 /run/schroot/mount/my-chroot-cb43935e-0812-45ea-af4f-965a1e2de91d/dev
19 /run/schroot/mount/my-chroot-cb43935e-0812-45ea-af4f-965a1e2de91d/dev/pts
2066 /run/schroot/mount/my-chroot-cb43935e-0812-45ea-af4f-965a1e2de91d/home
2049 /run/schroot/mount/my-chroot-cb43935e-0812-45ea-af4f-965a1e2de91d/tmp
당신이 장치 ID가 /proc/mounts
에서 여러 항목에 commont 경우 그 다음, 마운트 지점 알고 후에는 가정 할 수 있습니다 : 여기
'stat'에서 장치 번호가 아닌 inode 번호를 왜 나열합니까? –
@Steve - 음,'-f' 인수가 필요한 것을보기에 충분히주의 깊게 맨 페이지를 읽지 않았기 때문에. 나는 바보 야. –
- 1. 마우스가 눌려있는 것을 감지했습니다.
- 2. UIWebView에서 더블 탭을 감지했습니다.
- 3. iPhone이지도 이미지에서 접촉을 감지했습니다.
- 4. Java가 연결 끊김을 감지했습니다.
- 5. 블루투스 프린터가 있음을 감지했습니다.
- 6. mysql 데이터베이스의 변경을 감지했습니다.
- 7. glibc가 메모리 손상을 감지했습니다.
- 8. iphone이 위임 이벤트를 감지했습니다.
- 9. Starling이 이미지로 버튼을 감지했습니다.
- 10. 무선의 변경을 감지했습니다.
- 11. 스크롤을 바인드/언 바인드
- 12. 리눅스에서 vmlinuz 파일 편집하기
- 13. adb 다시 마운트를 작동시키는 방법은 무엇입니까?
- 14. GIO 라이브러리를 사용하여 FTP 마운트를 생성하십시오.
- 15. jQuery 바인드 해제 후 바인드
- 16. ckeditor를 사용하여 변경 사항을 감지했습니다.
- 17. contenteditable span에서 단어 감싸기를 감지했습니다.
- 18. 장치가 이동 한 것을 감지했습니다.
- 19. Valgrind가 strlen의 잘못된 읽기를 감지했습니다.
- 20. 오브젝트 Slick2d에서 마우스 클릭을 감지했습니다.
- 21. jquery에서 바인드 및 바인드 해제는 무엇을 의미합니까?
- 22. 구글지도 바인드
- 23. jQuery를 바인드
- 24. 부스트 :: 바인드
- 25. 바인드 ICommand의는
- 26. OS X에서 NTFS 볼륨 자동 마운트를 중지하는 방법은 무엇입니까?
- 27. Puppet에서 관리되지 않는 NFS 마운트를 제거하는 방법은 무엇입니까?
- 28. Java에서 연 파일을 afp 마운트를 통해 잠글 수 있습니까?
- 29. Linux에서 오래된 Samba 마운트를 확인하는 가장 빠른 방법
- 30. Hudson이 성공적인 Ant 빌드를 실패로 감지했습니다.
정말 그런 질문을하는 이유를 이해하고 싶습니다. –
나는 그것이 내가 필요하다고 생각한 것으로서 시작했고, 이제는 "나는 단지 알고있다"는 이상으로 발전했다. 원래의 이유는 내가 포괄적 인 파일 시스템 워커/스캐너를 작성했기 때문입니다. – Shamless
그런 다음 이미 방문한 inode를 기억해보십시오. –