"흥미로운" 마운트 지점만 표시/재미없는 유형 필터링

"흥미로운" 마운트 지점만 표시/재미없는 유형 필터링

나는 마운트된 드라이브를 표시하곤 했는데 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또는--typeslist
    • 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 -Dofield,field.

답변2

-t이 옵션은 마운트 지점을 표시할 때도 적용되며 mount, 쉼표로 구분된 파일 시스템 유형 목록을 사용합니다.

mount -t ext3,ext4,cifs,nfs,nfs4,zfs

이것이 맞는지 잘 모르겠습니다.더 나은 것해결책. 예를 들어 를 사용하기 시작 btrfs하고 목록에 추가하는 것을 잊어버린 경우 해당 내용이 표시되지 않으며 아마도 놓치지 않을 것입니다. 목록이 길어지더라도 새로운 "흥미롭지 않은" 파일 시스템이 나타나면 사전에 필터링하는 것이 좋습니다.

@Graeme이 제안한 것과 유사한 흥미로운 마운트 지점을 적극적으로 사용하려고 시도할 수 있지만 grepNFS/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가 내장된 파일 시스템)을 어떻게 해야 할지 모르겠습니다 . 특별한 사람들에게는 특별한 대우가 필요할 수도 있습니다.

관련 정보