파일 시스템과 마운트 정보를 보여주는 findmnt 명령어
findmnt 는 file system 과 mount 정보를 보여주는 명령어로 리눅스 아재력 테스트에서 알게 된 명령어입니다.
기존에는 mount 정보를 보려면 mount -l 을 사용했는데 findmnt 를 사용해보니 필요한 정보만 뽑아서 보거나 json 출력이 지원되고 가독성이 좋은등 장점이 많아서 findmnt 에 익숙해지려고 합니다.
mount 와 findmnt 의 결과를 비교해 보면 findmnt 가 훨씬 가독성이 좋은 것을 알수 있습니다.
마운트 정보
findmnt 는 /etc/fstab, /etc/mtab 와 /proc/self/mountinfo 파일을 찾아서 마운트 정보를 출력합니다. 만약 디바이스나 경로가 지정되면 해당 정보만 출력하지만 옵션없이 findmnt 를 실행하면 모든 마운트 정보를 출력합니다.
$ findmnt TARGET SOURCE FSTYPE OPTIONS / /dev/xvda2 xfs rw,relatime,seclabel,attr2,inode64,noquota ├─/sys sysfs sysfs rw,nosuid,nodev,noexec,relatime,seclabel │ ├─/sys/kernel/security securityfs securityfs rw,nosuid,nodev,noexec,relatime │ ├─/sys/fs/cgroup tmpfs tmpfs ro,nosuid,nodev,noexec,seclabel,mode=755 │ │ ├─/sys/fs/cgroup/systemd cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,xattr,release_agent=/usr/lib/systemd/systemd-cgroups │ │ ├─/sys/fs/cgroup/blkio cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,blkio │ │ ├─/sys/fs/cgroup/cpu,cpuacct cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,cpu,cpuacct │ │ ├─/sys/fs/cgroup/pids cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,pids │ │ ├─/sys/fs/cgroup/perf_event cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,perf_event │ │ ├─/sys/fs/cgroup/net_cls,net_prio cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,net_cls,net_prio │ │ ├─/sys/fs/cgroup/cpuset cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,cpuset │ │ ├─/sys/fs/cgroup/rdma cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,rdma │ │ ├─/sys/fs/cgroup/devices cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,devices │ │ ├─/sys/fs/cgroup/freezer cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,freezer │ │ ├─/sys/fs/cgroup/memory cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,memory │ │ └─/sys/fs/cgroup/hugetlb cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,hugetlb │ ├─/sys/fs/pstore pstore pstore rw,nosuid,nodev,noexec,relatime,seclabel │ ├─/sys/fs/bpf bpf bpf rw,nosuid,nodev,noexec,relatime,mode=700 │ ├─/sys/fs/selinux selinuxfs selinuxfs rw,relatime │ ├─/sys/kernel/debug debugfs debugfs rw,relatime,seclabel │ └─/sys/kernel/config configfs configfs rw,relatime ├─/proc proc proc rw,nosuid,nodev,noexec,relatime │ └─/proc/sys/fs/binfmt_misc systemd-1 autofs rw,relatime,fd=35,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=18553 │ └─/proc/sys/fs/binfmt_misc binfmt_misc binfmt_misc rw,relatime ├─/dev devtmpfs devtmpfs rw,nosuid,seclabel,size=391616k,nr_inodes=97904,mode=755 │ ├─/dev/shm tmpfs tmpfs rw,nosuid,nodev,seclabel │ ├─/dev/pts devpts devpts rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000 │ ├─/dev/mqueue mqueue mqueue rw,relatime,seclabel │ └─/dev/hugepages hugetlbfs hugetlbfs rw,relatime,seclabel,pagesize=2M └─/run tmpfs tmpfs rw,nosuid,nodev,seclabel,mode=755 └─/run/user/1000 tmpfs tmpfs rw,nosuid,nodev,relatime,seclabel,size=83852k,mode=700,uid=1000,gid=1000
특정 device
특정 device 의 마운트 정보를 보려면 디바이스를 옵션으로 전달해 줍니다.
$ findmnt /dev/xvda2 TARGET SOURCE FSTYPE OPTIONS / /dev/xvda2 xfs rw,relatime,seclabel,attr2,inode64,noquota
path 지정
특정 path의 마운트 정보를 알려면 path 를 옵션으로 전달하며 아래는 root file system 의 마운트 정보를 표시합니다.
$ findmnt / TARGET SOURCE FSTYPE OPTIONS / /dev/xvda2 xfs rw,relatime,seclabel,attr2,inode64,noquota
file system 지정
-t FS_TYPE 옵션을 사용하면 파일 시스템의 유형을 지정할 수 있습니다. 다음은 ext4 파일 시스템을 사용하는 마운트 정보를 출력합니다.
$ findmnt -t xfs TARGET SOURCE FSTYPE OPTIONS / /dev/xvda2 xfs rw,relatime,seclabel,attr2,inode64,noquota
여러 개의 파일시스템을 지정할 경우 , 를 구분자로 주면 됩니다. ( , 뒤에 공백이 있으면 안 됩니다.)
$ findmnt -t xfs,tmpfs TARGET SOURCE FSTYPE OPTIONS / /dev/xvda2 xfs rw,relatime,seclabel,attr2,inode64,noquota ├─/sys/fs/cgroup tmpfs tmpfs ro,nosuid,nodev,noexec,seclabel,mode=755 ├─/dev/shm tmpfs tmpfs rw,nosuid,nodev,seclabel └─/run tmpfs tmpfs rw,nosuid,nodev,seclabel,mode=755 └─/run/user/1000 tmpfs tmpfs rw,nosuid,nodev,relatime,seclabel,size=83852k,mode=700,uid=1000,gid=1000
용량 보기
-D 옵션을 사용하면 df 명령어처럼 파일 시스템의 용량과 사용 현황을 표시합니다.
$ findmnt -t xfs SOURCE FSTYPE SIZE USED AVAIL USE% TARGET devtmpfs devtmpfs 382.4M 0 382.4M 0% /dev tmpfs tmpfs 409.5M 0 409.5M 0% /dev/shm tmpfs tmpfs 409.5M 46.5M 363M 11% /run tmpfs tmpfs 409.5M 0 409.5M 0% /sys/fs/cgroup bpf bpf 0 0 0 - /sys/fs/bpf /dev/xvda2 xfs 10G 3G 7G 30% / selinuxfs selinuxfs 0 0 0 - /sys/fs/selinux tmpfs tmpfs 81.9M 0 81.9M 0% /run/user/1000
출력
json 으로 출력
-J 옵션을 사용하면 json 형식으로 출력해 줍니다.
$ findmnt -J / { "filesystems": [ {"target": "/", "source": "/dev/xvda2", "fstype": "xfs", "options": "rw,relatime,seclabel,attr2,inode64,noquota"} ] }
json 형식으므로 jq 같은 커맨드 json 유틸리티를 활용해서 처리할 수 있습니다. 아래는 json 의 filesystems 프로퍼티를 꺼내서 json object 로 가공해서 표시합니다.
$ findmnt -J / | jq '.filesystems[] | { path: .target, s: .source, fs: .fstype }' { "path": "/", "s": "/dev/xvda2", "fs": "xfs" }
출력 항목 제어
-o 옵션뒤에 출력할 컬럼을 지정할 수 있습니다. 컬럼명은 정해져 있으며 아래 예제처럼 컬럼을 지정해서 원하는 데이타만 출력되게 할 수 있습니다.
$ findmnt -o SOURCE,FSTYPE,SIZE,USED,AVAIL,USE%,TARGET -t tmpfs,xfs SOURCE FSTYPE SIZE USED AVAIL USE% TARGET /dev/xvda2 xfs 10G 3G 7G 30% / tmpfs tmpfs 409.5M 0 409.5M 0% ├─/sys/fs/cgroup tmpfs tmpfs 409.5M 0 409.5M 0% ├─/dev/shm tmpfs tmpfs 409.5M 46.5M 363M 11% └─/run tmpfs tmpfs 81.9M 0 81.9M 0% └─/run/user/1000