현재 작업 디렉토리의 fs 유형을 어떻게 확인할 수 있습니까?


19

CWD의 마운트 유형을 감지하는 플랫폼 독립적이며 가벼운 방법이 필요합니다. 특히 CWD가 SSHFS, NFS, CIFS, SMB 또는 로컬 블록 저장소 마운트에 있는지 확인해야합니다.

Mac OSX 10.6, 10.7 및 RHEL5 (최소한)에서이 작업을 수행해야합니다.

df를 사용할 가능성이 있지만 df는이 두 플랫폼에서 상당히 다르게 작동합니다. 또한 CLI를 사용하여 출력을 awk로 긁어 야합니다.

이 정보는 어느 정도 사용 가능해야합니다. 이 정보를 제공 할 수있는 도구를 알고 있습니까?

답변:


17

파일 시스템 유형은 OS 독립적 인 방식으로 쉽게 액세스 할 수있는 것이 아닙니다. 파일 시스템 유형 이름은 OS에 따라 다르므로 표준 방법을 설정하려는 동기가 없었습니다.

비 포함 Linux 시스템 stat -f -c %T .에서 현재 디렉토리의 파일 시스템 유형을 표시합니다. OSX의 stat명령에는 이와 같은 것이 없습니다.

파일 시스템 유형이 유한 목록에 있는지 여부 만 알면되므로 Linux에서는 정보를 인쇄 할 경로 세트와 파일 시스템 유형 세트를 모두 제한 할 수 있습니다. 현재 디렉토리의 파일 시스템 유형이 목록에 없으면 오류 ( "df : 파일 시스템이 처리되지 않았습니다")가 표시됩니다.

if df -t sshfs -t nfs -t cifs . >/dev/null 2>/dev/null; then …

동일한 구문이 OSX에서 작동하거나 작동하지 않을 수 있습니다. 그렇지 않으면을 시도하십시오 df -T sshfs,nfs,cifs ..


이것이 바로 내가 필요한 것입니다. 질 당신은 위대하다!
ARX

7

Linux에서 GNU 통계를 사용할 수 있습니다.

stat --file-system --format=%T /tmp/subdir/whatever
tmpfs

하위 디렉토리에서 작동하기 때문에 훌륭합니다. 감사!
Avindra Goolcharan

4

Linux에서는 util-linux 2.18부터 findmnt를 사용할 수 있습니다.

findmnt -n -o FSTYPE -T /home
nfs4

/ home / subdir에서는 작동하지 않으므로 OP에 도움이되지 않습니다.
Eloff

나를 위해 util-linux 2.23의 findmount를 사용하여 하위 디렉토리에서도 작동합니다.
rudimeier 2016 년

3

테스트하지는 않았지만 df -P대부분의 플랫폼에서 동일하게 작동해야합니다.

이것은 Linux에서 작동합니다.

$ mount | grep "^$(df -Pk . | head -n 2 | tail -n 1 | cut -f 1 -d ' ') " | cut -f 5 -d ' '

또는 재사용 가능한 기능으로 나누십시오.

# get_mount <directory>
get_mount() {
    df -Pk "$1" | head -n 2 | tail -n 1 | cut -f 1 -d ' '
}

# get_fs <mountpoint>
get_fs() {
    mount | grep "^$1 " | cut -f 5 -d ' '
}

그리고 함수를 호출 :

get_fs $(get_mount .)

약간 빠른 사용으로 작성하여 다시 할 수 sed또는 awk하지만,이 방법은 아마 쉽게 읽을 수 있습니다.

이것이 작동하지 않으면 비슷한 결과를 시도 할 수 있지만 /etc/mtab의 출력 대신 사용 하십시오 mount.


P에서는 df -P이 같은 방식으로 행동해야하므로, POSIX입니다. 그러나 파일 시스템 경로에서 마운트 지점으로 이동하는 것이 더 까다 롭습니다.
Gilles 'SO- 악마 그만해'10

1
디렉토리가 -o 루프로 마운트되어 있으면 솔루션이 안전하지 않은 것 같습니다. 적어도 내 시스템 df에서 사용 된 루프 장치를 보여 주지만 mount는 사용 된 이미지 파일을 보여줍니다. df가 mount와 같은 장치를 표시하지 않는 경우가 더 많을 수 있다고 생각합니다. mount 매뉴얼 페이지의 인용문을 참고하십시오. "목록 모드는 이전 버전과의 호환성을 위해서만 유지됩니다.보다 강력하고 정의 가능한 출력을 위해서는 특히 스크립트에서 findmnt (8)을 사용하십시오."
rudimeier
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.