!["흥미로운" 마운트 지점만 표시/재미없는 유형 필터링](https://linux55.com/image/35648/%22%ED%9D%A5%EB%AF%B8%EB%A1%9C%EC%9A%B4%22%20%EB%A7%88%EC%9A%B4%ED%8A%B8%20%EC%A7%80%EC%A0%90%EB%A7%8C%20%ED%91%9C%EC%8B%9C%2F%EC%9E%AC%EB%AF%B8%EC%97%86%EB%8A%94%20%EC%9C%A0%ED%98%95%20%ED%95%84%ED%84%B0%EB%A7%81.png)
나는 마운트된 드라이브를 표시하곤 했는데 mount
덜 흥미로운 드라이브(예: 비물리적 드라이브)를 보고 싶지 않았습니다. 그래서 나는 한때 다음과 같은 스크립트를 가지고 있었습니다 mnt
.
mount | grep -Ev 'type (proc|sysfs|tmpfs|devpts) '
Ubuntu 8.04에서는 나와 마운트 지점만 ext3
표시 reiserfs
됩니다. 해당 줄은 실제로 주석 처리되었으며 지금은 다음을 사용합니다(Ubuntu 12.04의 경우).
mount | grep -Ev 'type (proc|sysfs|tmpfs|devpts|debugfs|rpc_pipefs|nfsd|securityfs|fusectl|devtmpfs) '
ext4
내 파티션 과 파티션 만 표시합니다 zfs
(사용을 포기함 reiserfs
).
이제 Ubuntu 14.04를 준비하고 있으며 스크립트를 다시 확장해야 합니다(cgroup, pstore). 스크립트를 확장하지 않고 이 작업을 수행하는 더 좋은 방법이 있습니까? 저는 마운트된 물리적 디스크와 마운트된 네트워크 드라이브( nfs
, ) 에만 관심이 있습니다 cifs
.
답변1
사용하지 마세요 mount
.
에서 man mount
:
- 나열됨.
- 목록 모드는 이전 버전과의 호환성을 위해서만 유지됩니다.
- 보다 강력하고 사용자 정의 가능한 출력 사용을 위해
findmnt
(8), 특히 스크립트에서. - 마운트 지점 이름의 제어 문자는 다음으로 대체됩니다.?.
설명서에서 권장하는 대로 사용하십시오 findmnt
. 아래에 설명된 몇 가지 흥미로운 옵션이 있습니다 findmnt --help
.
-i
또는--invert
- 매칭감 반전
-R
또는--submounts
- 파일 시스템과 일치하는 모든 하위 마운트를 인쇄합니다.
-t
또는--types
list
- FS 유형별로 설정된 파일 시스템 제한
이것들은 그 중 몇 가지에 불과합니다.많은명령줄에서 필터를 적용할 수 있습니다.
man findmnt
- 예
findmnt --fstab -t nfs
- 정의된 모든 NFS 파일 시스템을 인쇄합니다
/etc/fstab
. findmnt --fstab /mnt/foo
/etc/fstab
마운트 지점 디렉토리가 있는 모든 파일 시스템을 인쇄합니다/mnt/foo
. 또한--bind
소스가 있는 설치 도 인쇄합니다/mnt/foo
.
다음을 사용할 수 있습니다.
findmnt -it sysfs,cgroup,proc,devtmpfs,devpts,pstore,debugfs,hugetlbfs,mqueue,configfs
저것~해야 한다나는 그것이 모든 가짜 파일 시스템을 걸러낸다고 믿습니다.
그러나 다음을 사용하여 동일한 작업을 수행할 수 있습니다 mount
.
mount -t nosysfs,nodevtmpfs...
아마도 더 나은 접근 방식은 아래에 설명된 다음 명령 중 하나를 사용하는 것입니다 findmnt --help
.
findmnt -D
또는findmnt --df
- 출력을 모방하다
df
(1). 이 옵션은-o SOURCE,FSTYPE,SIZE,USED,AVAIL,USE%,TARGET
모든 의사 파일 시스템과 동일하지만 제외됩니다.--all
모든 파일 시스템을 인쇄하는 데 사용됩니다 .
- 출력을 모방하다
기본값에 목록 필드를 추가할 수 있습니다.findmnt -Do
+field,+field
-D
.... 다음과 같은 항목을 생략하여 파일 시스템을 사용하여 자신만의 필드 목록을 지정할 수 있습니다.+
findmnt -Do
field,field
.
답변2
-t
이 옵션은 마운트 지점을 표시할 때도 적용되며 mount
, 쉼표로 구분된 파일 시스템 유형 목록을 사용합니다.
mount -t ext3,ext4,cifs,nfs,nfs4,zfs
이것이 맞는지 잘 모르겠습니다.더 나은 것해결책. 예를 들어 를 사용하기 시작 btrfs
하고 목록에 추가하는 것을 잊어버린 경우 해당 내용이 표시되지 않으며 아마도 놓치지 않을 것입니다. 목록이 길어지더라도 새로운 "흥미롭지 않은" 파일 시스템이 나타나면 사전에 필터링하는 것이 좋습니다.
@Graeme이 제안한 것과 유사한 흥미로운 마운트 지점을 적극적으로 사용하려고 시도할 수 있지만 grep
NFS/CIFS 마운트(로 시작하지 않음)에도 관심이 있으므로 /
다음을 수행해야 합니다.
mount | grep -E --color=never '^(/|[[:alnum:]\.-]*:/)'
( 발견된 라인의 이니셜 색상을 --color
억제해야 합니다 .) /
Graeme이 지적했듯이 NFS 공유의 이름 기반 마운트도 허용되어야 합니다. 이 모드는 /
"a-zA-Z0-9" 또는 "a-zA-Z0-9"의 조합으로 시작하는 줄을 선택합니다. 다음은 :/
(NFS 설치용) 입니다 .
답변3
어때요?
mount | grep '^/[^/]'
물리적 디스크와 관련된 마운트 지점은 항상 로 시작합니다. /
첫 번째 필드가 장치에 대한 경로이기 때문입니다. cifs
설치는 so 제외 행으로 시작한 //
다음 /
무시합니다.
고쳐 쓰다
질문을 잘못 읽었습니다. 질문하고 싶은 줄 알았습니다.들어오지 못하게 하다 cifs
그리고 nfs
. 이 시도:
mount | grep -E '^[^ ]*[/:]'
답변4
블록 장치를 백업 스토리지로 사용하는 파일 시스템 목록은 에서 확인할 수 있습니다 /proc/filesystems
. 예를 들어 다음과 같이 사용할 수 있습니다.
mount -t "$(grep -v '^nodev' /proc/filesystems | cut -f2 | paste -s -d ,)"
파일 시스템이 블록 장치 및 네트워크 파일 시스템에 의해 백업되기를 원하기 때문에 목록을 수동으로 유지 관리할 필요성이 완전히 제거되지는 않습니다. 그러나 사용하는 네트워크 파일 시스템 목록만 유지하면 됩니다.
/proc/filesystems
여러 블록 장치를 백업 스토리지로 사용하는 파일 시스템(예: 파일 시스템에 RAID가 내장된 파일 시스템)을 어떻게 해야 할지 모르겠습니다 . 특별한 사람들에게는 특별한 대우가 필요할 수도 있습니다.