如何在Linux和Unix上使用Duf查看磁盘使用情况

时间:2020-03-21 11:45:07  来源:igfitidea点击:

查看Linux和Unix中磁盘使用情况的最常用的应用程序是du。

Du,代表磁盘使用情况,被广泛用来找出哪些文件和目录占据了最大的磁盘空间。
还存在许多其他命令行和图形工具来完成此任务。
我们已经介绍了其中一些内容,并在过去将其发布在我们的教程 中。
今天,我们将再一个名为duf的磁盘使用情况检查器。

Duf是一个命令行实用程序,用于查找Linux和类似Unix的系统中的磁盘使用情况。
它以漂亮的表格列和用户友好的布局显示磁盘使用情况的详细信息。
我们甚至还可以获取JSON格式的磁盘使用情况输出。

如果输出超出屏幕的可见部分,它将自动调整终端的宽度。
我们可以按总大小,文件系统类型,已用和可用空间,安装点和索引节点对结果进行排序。
也可以从输出中显示,隐藏和排除特定的设备详细信息。

Duf是磁盘使用量/可用空间的缩减。
它是用Go编程语言编写的开放源代码应用程序,并已获得MIT许可。
它可以在GNU/Linux,BSD和Mac OS下运行。

在Linux上安装Duf

目前,Duf已打包为基于Arch,基于DEB和基于RPM的Linux操作系统。

Duf在AUR中可用。

如果我们使用的是Arch Linux或者任何其他的arch变体,则可以使用AUR帮助程序来安装它,例如Yay。

$yay -S duf

在基于Deb的系统(例如Debian,Ubuntu,Linux Mint)上,从发行版页面下载.deb二进制安装文件,然后使用系统的软件包管理器进行安装。

$sudo apt install gdebi
$sudo gdebi duf_0.3.1_linux_amd64.deb

在基于RPM的系统(例如RHEL,CentOS,Fedora)上,下载.rpm二进制文件并使用以下命令进行安装:

$sudo rpm -Uvh duf_0.3.1_linux_amd64.rpm

我们也可以从源代码构建它。
确保在系统上安装了GO语言。

Git克隆duf存储库:

$git clone https://github.com/muesli/duf.git

上面的命令将在名为“ duf”的本地目录中克隆duf在线存储库的内容。
转到该目录:

$cd duf

使用以下命令编译并安装它:

$go build

在Linux和Unix上使用Duf查看磁盘使用情况

使用duf查找磁盘空间使用情况很容易!

我们所要做的就是只运行'duf'命令,而没有如下所示的任何选项:

$duf

输出示例:

╭──────────────────────────────────────────────────────────────────────────────────────────╮
│ 1 local device                                                                           │
├────────────┬────────┬────────┬───────┬───────────────────────────────┬──────┬────────────┤
│ MOUNTED ON │   SIZE │   USED │ AVAIL │              USE%             │ TYPE │ FILESYSTEM │
├────────────┼────────┼────────┼───────┼───────────────────────────────┼──────┼────────────┤
│/        │ 457.4G │ 412.1G │ 22.1G │ [######..]  90.1% │ ext4 │ /dev/sda1  │
╰────────────┴────────┴────────┴───────┴───────────────────────────────┴──────┴────────────╯
╭───────────────────────────────────────────────────────────────────────────────────────────────────╮
│ 7 special devices                                                                                 │
├────────────────┬────────┬────────┬────────┬───────────────────────────────┬──────────┬────────────┤
│ MOUNTED ON     │   SIZE │   USED │  AVAIL │              USE%             │ TYPE     │ FILESYSTEM │
├────────────────┼────────┼────────┼────────┼───────────────────────────────┼──────────┼────────────┤
│ /dev           │   3.8G │     0B │   3.8G │                               │ devtmpfs │ udev       │
│ /dev/shm       │   3.8G │ 235.3M │   3.6G │ [#...................]   6.0% │ tmpfs    │ tmpfs      │
│ /run           │ 787.0M │   1.8M │ 785.2M │ [....................]   0.2% │ tmpfs    │ tmpfs      │
│ /run/lock      │   5.0M │   4.0K │   5.0M │ [....................]   0.1% │ tmpfs    │ tmpfs      │
│ /run/snapd/ns  │ 787.0M │   1.8M │ 785.2M │ [....................]   0.2% │ tmpfs    │ tmpfs      │
│ /run/user/1000 │ 787.0M │ 238.2M │ 548.8M │ [##..............]  30.3% │ tmpfs    │ tmpfs      │
│ /sys/fs/cgroup │   3.8G │     0B │   3.8G │                               │ tmpfs    │ tmpfs      │
╰────────────────┴────────┴────────┴────────┴───────────────────────────────┴──────────┴────────────╯

从上面的输出中可以看到,Duf以表格列的格式列出了以下详细信息:

  • 已安装设备的总数,
  • 挂载点
  • 根分区的总大小,
  • 已用磁盘空间和可用磁盘空间的总大小,
  • 总磁盘使用量百分比
  • 文件系统类型,
  • 文件系统名称等

要显示所有详细信息,包括伪,重复和不可访问的文件系统,请运行:

$duf --all

输出示例:

╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ 24 local devices                                                                                                  │
├────────────────────────────────┬────────┬────────┬───────┬───────────────────────────────┬──────────┬─────────────┤
│ MOUNTED ON                     │   SIZE │   USED │ AVAIL │              USE%             │ TYPE     │ FILESYSTEM  │
├────────────────────────────────┼────────┼────────┼───────┼───────────────────────────────┼──────────┼─────────────┤
│/                            │ 457.4G │ 412.1G │ 22.1G │ [######..]  90.1% │ ext4     │ /dev/sda1   │
│ /run/snapd/ns/multipass.mnt    │     0B │     0B │    0B │                               │ nsfs     │ nsfs        │
│ /snap/bashtop/128              │  23.1M │  23.1M │    0B │ [######] 100.0% │ squashfs │ /dev/loop0  │
│ /snap/bashtop/134              │  23.1M │  23.1M │    0B │ [######] 100.0% │ squashfs │ /dev/loop1  │
│ /snap/chromium/1298            │ 162.1M │ 162.1M │    0B │ [######] 100.0% │ squashfs │ /dev/loop2  │
│ /snap/chromium/1320            │ 162.0M │ 162.0M │    0B │ [######] 100.0% │ squashfs │ /dev/loop3  │
│ /snap/core/9804                │  96.6M │  96.6M │    0B │ [######] 100.0% │ squashfs │ /dev/loop4  │
│ /snap/core/9993                │  97.1M │  97.1M │    0B │ [######] 100.0% │ squashfs │ /dev/loop6  │
│ /snap/core18/1880              │  55.0M │  55.0M │    0B │ [######] 100.0% │ squashfs │ /dev/loop15 │
│ /snap/core18/1885              │  55.4M │  55.4M │    0B │ [######] 100.0% │ squashfs │ /dev/loop5  │
│ /snap/gifcurry/8               │ 149.0M │ 149.0M │    0B │ [######] 100.0% │ squashfs │ /dev/loop7  │
│ /snap/gnome-3-26-1604/100      │ 140.8M │ 140.8M │    0B │ [######] 100.0% │ squashfs │ /dev/loop16 │
│ /snap/gnome-3-26-1604/98       │ 140.8M │ 140.8M │    0B │ [######] 100.0% │ squashfs │ /dev/loop8  │
│ /snap/gnome-3-28-1804/116      │ 160.2M │ 160.2M │    0B │ [######] 100.0% │ squashfs │ /dev/loop14 │
│ /snap/gnome-3-28-1804/128      │ 161.5M │ 161.5M │    0B │ [######] 100.0% │ squashfs │ /dev/loop10 │
│ /snap/gnome-3-34-1804/33       │ 255.6M │ 255.6M │    0B │ [######] 100.0% │ squashfs │ /dev/loop9  │
│ /snap/gnome-3-34-1804/36       │ 255.6M │ 255.6M │    0B │ [######] 100.0% │ squashfs │ /dev/loop11 │
│ /snap/gnome-system-monitor/145 │   2.2M │   2.2M │    0B │ [######] 100.0% │ squashfs │ /dev/loop17 │
│ /snap/gnome-system-monitor/148 │   2.2M │   2.2M │    0B │ [######] 100.0% │ squashfs │ /dev/loop18 │
│ /snap/gtk-common-themes/1502   │  54.9M │  54.9M │    0B │ [######] 100.0% │ squashfs │ /dev/loop12 │
│ /snap/gtk-common-themes/1506   │  62.1M │  62.1M │    0B │ [######] 100.0% │ squashfs │ /dev/loop13 │
│ /snap/multipass/2531           │ 220.0M │ 220.0M │    0B │ [######] 100.0% │ squashfs │ /dev/loop19 │
│ /snap/multipass/2604           │ 220.0M │ 220.0M │    0B │ [######] 100.0% │ squashfs │ /dev/loop20 │
│ /sys/fs/fuse/connections       │     0B │     0B │    0B │                               │ fusectl  │ fusectl     │
╰────────────────────────────────┴────────┴────────┴───────┴───────────────────────────────┴──────────┴─────────────╯
╭─────────────────────────────────────────────────────────────────────────────────╮
│ 1 FUSE device                                                                   │
├─────────────────────┬──────┬──────┬───────┬──────┬─────────────────┬────────────┤
│ MOUNTED ON          │ SIZE │ USED │ AVAIL │ USE% │ TYPE            │ FILESYSTEM │
├─────────────────────┼──────┼──────┼───────┼──────┼─────────────────┼────────────┤
│ /run/user/1000/gvfs │   0B │   0B │    0B │      │ fuse.gvfsd-fuse │ gvfsd-fuse │
╰─────────────────────┴──────┴──────┴───────┴──────┴─────────────────┴────────────╯
╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ 32 special devices                                                                                                     │
├─────────────────────────────────┬────────┬────────┬────────┬───────────────────────────────┬─────────────┬─────────────┤
│ MOUNTED ON                      │   SIZE │   USED │  AVAIL │              USE%             │ TYPE        │ FILESYSTEM  │
├─────────────────────────────────┼────────┼────────┼────────┼───────────────────────────────┼─────────────┼─────────────┤
│ /dev                            │   3.8G │     0B │   3.8G │                               │ devtmpfs    │ udev        │
│ /dev/hugepages                  │     0B │     0B │     0B │                               │ hugetlbfs   │ hugetlbfs   │
│ /dev/mqueue                     │     0B │     0B │     0B │                               │ mqueue      │ mqueue      │
│ /dev/pts                        │     0B │     0B │     0B │                               │ devpts      │ devpts      │
│ /dev/shm                        │   3.8G │ 224.1M │   3.6G │ [#...................]   5.7% │ tmpfs       │ tmpfs       │
│ /proc                           │     0B │     0B │     0B │                               │ proc        │ proc        │
│ /proc/sys/fs/binfmt_misc        │     0B │     0B │     0B │                               │ binfmt_misc │ binfmt_misc │
│ /run                            │ 787.0M │   1.8M │ 785.2M │ [....................]   0.2% │ tmpfs       │ tmpfs       │
│ /run/lock                       │   5.0M │   4.0K │   5.0M │ [....................]   0.1% │ tmpfs       │ tmpfs       │
│ /run/snapd/ns                   │ 787.0M │   1.8M │ 785.2M │ [....................]   0.2% │ tmpfs       │ tmpfs       │
│ /run/user/1000                  │ 787.0M │ 238.2M │ 548.8M │ [##..............]  30.3% │ tmpfs       │ tmpfs       │
│ /sys                            │     0B │     0B │     0B │                               │ sysfs       │ sysfs       │
│ /sys/fs/bpf                     │     0B │     0B │     0B │                               │ bpf         │ none        │
│ /sys/fs/cgroup                  │   3.8G │     0B │   3.8G │                               │ tmpfs       │ tmpfs       │
│ /sys/fs/cgroup/blkio            │     0B │     0B │     0B │                               │ cgroup      │ cgroup      │
│ /sys/fs/cgroup/cpu,cpuacct      │     0B │     0B │     0B │                               │ cgroup      │ cgroup      │
│ /sys/fs/cgroup/cpuset           │     0B │     0B │     0B │                               │ cgroup      │ cgroup      │
│ /sys/fs/cgroup/devices          │     0B │     0B │     0B │                               │ cgroup      │ cgroup      │
│ /sys/fs/cgroup/freezer          │     0B │     0B │     0B │                               │ cgroup      │ cgroup      │
│ /sys/fs/cgroup/hugetlb          │     0B │     0B │     0B │                               │ cgroup      │ cgroup      │
│ /sys/fs/cgroup/memory           │     0B │     0B │     0B │                               │ cgroup      │ cgroup      │
│ /sys/fs/cgroup/net_cls,net_prio │     0B │     0B │     0B │                               │ cgroup      │ cgroup      │
│ /sys/fs/cgroup/perf_event       │     0B │     0B │     0B │                               │ cgroup      │ cgroup      │
│ /sys/fs/cgroup/pids             │     0B │     0B │     0B │                               │ cgroup      │ cgroup      │
│ /sys/fs/cgroup/rdma             │     0B │     0B │     0B │                               │ cgroup      │ cgroup      │
│ /sys/fs/cgroup/systemd          │     0B │     0B │     0B │                               │ cgroup      │ cgroup      │
│ /sys/fs/cgroup/unified          │     0B │     0B │     0B │                               │ cgroup2     │ cgroup2     │
│ /sys/fs/pstore                  │     0B │     0B │     0B │                               │ pstore      │ pstore      │
│ /sys/kernel/config              │     0B │     0B │     0B │                               │ configfs    │ configfs    │
│ /sys/kernel/debug               │     0B │     0B │     0B │                               │ debugfs     │ debugfs     │
│ /sys/kernel/security            │     0B │     0B │     0B │                               │ securityfs  │ securityfs  │
│ /sys/kernel/tracing             │     0B │     0B │     0B │                               │ tracefs     │ tracefs     │
╰─────────────────────────────────┴────────┴────────┴────────┴───────────────────────────────┴─────────────┴─────────────╯

从输出中排除特定设备的详细信息

有时,我们可能想从输出中排除一些细节。
例如,以下命令将排除特殊设备的详细信息(例如'/run/lock','/sys/fs/bpf')。

$duf --hide-special

仅显示本地设备的磁盘使用情况详细信息,例如:从输出中消除特殊设备:

╭──────────────────────────────────────────────────────────────────────────────────────────╮
│ 1 local device                                                                           │
├────────────┬────────┬────────┬───────┬───────────────────────────────┬──────┬────────────┤
│ MOUNTED ON │   SIZE │   USED │ AVAIL │              USE%             │ TYPE │ FILESYSTEM │
├────────────┼────────┼────────┼───────┼───────────────────────────────┼──────┼────────────┤
│/        │ 457.4G │ 412.0G │ 22.1G │ [######..]  90.1% │ ext4 │ /dev/sda1  │
╰────────────┴────────┴────────┴───────┴───────────────────────────────┴──────┴────────────╯

其他受支持的选项是:

  • '-隐藏本地'
  • '-隐藏网络'
  • '-隐藏保险丝'
  • '-隐藏循环'
  • '-隐藏绑定'

排序输出

我们可以显示按各种参数排序的磁盘使用情况详细信息,例如:

  • 'mountpoint',
  • 'size' ,
  • 'used' ,
  • 'avail' ,
  • 'usage' ,
  • 'inodes',
  • 'inodes_used',
  • 'inodes_avail',
  • 'inodes_usage',
  • 'type' ,
  • “filesystem”等

例如,要按大小对输出进行排序,请使用以下命令:

$duf --sort size

按文件系统对输出进行排序:

$duf --sort filesystem

显示或者隐藏特定列

类似于从输出中排除某些设备详细信息,我们还可以在输出中显示或者隐藏特定的列。

以下命令将仅显示“ mountpoint”,“ size”和“ usage”列的输出:

$duf --output mountpoint,size,usage

输出示例:

╭─────────────────────────────────────────────────────╮
│ 1 local device                                      │
├────────────┬────────┬───────────────────────────────┤
│ MOUNTED ON │   SIZE │              USE%             │
├────────────┼────────┼───────────────────────────────┤
│/        │ 457.4G │ [######..]  90.1% │
╰────────────┴────────┴───────────────────────────────╯
╭─────────────────────────────────────────────────────────╮
│ 7 special devices                                       │
├────────────────┬────────┬───────────────────────────────┤
│ MOUNTED ON     │   SIZE │              USE%             │
├────────────────┼────────┼───────────────────────────────┤
│ /dev           │   3.8G │                               │
│ /dev/shm       │   3.8G │ [#...................]   6.9% │
│ /run           │ 787.0M │ [....................]   0.2% │
│ /run/lock      │   5.0M │ [....................]   0.1% │
│ /run/snapd/ns  │ 787.0M │ [....................]   0.2% │
│ /run/user/1000 │ 787.0M │ [##..............]  30.3% │
│ /sys/fs/cgroup │   3.8G │                               │
╰────────────────┴────────┴───────────────────────────────╯

支持的选项列表为:

  • 'mountpoint',
  • '尺寸' ,
  • '用过的' ,
  • “有效”,
  • '用法' ,
  • 'inodes',
  • 'inodes_used',
  • 'inodes_avail',
  • 'inodes_usage',
  • '类型' ,
  • '文件系统' 。

显示索引节点详细信息

如果要列出索引节点信息而不是块使用情况,请运行以下命令:

$duf --inodes

以JSON格式显示磁盘使用情况输出

代替以表格列格式显示输出,我们可以以JSON格式显示输出。

为此,请运行:

$duf --json

输出示例:

[
 {
  "device": "sysfs",
  "device_type": "special",
  "mount_point": "/sys",
  "fs_type": "sysfs",
  "type": "sysfs",
  "opts": "rw,nosuid,nodev,noexec,relatime",
  "total": 0,
  "free": 0,
  "used": 0,
  "inodes": 0,
  "inodes_free": 0,
  "inodes_used": 0,
  "blocks": 0,
  "block_size": 4096
 },
.
.
.
{
  "device": "binfmt_misc",
  "device_type": "special",
  "mount_point": "/proc/sys/fs/binfmt_misc",
  "fs_type": "binfmt_misc",
  "type": "binfmt_misc",
  "opts": "rw,nosuid,nodev,noexec,relatime",
  "total": 0,
  "free": 0,
  "used": 0,
  "inodes": 0,
  "inodes_free": 0,
  "inodes_used": 0,
  "blocks": 0,
  "block_size": 4096
 }
]

获得帮助

要显示duf实用程序的帮助部分,请运行:

$duf --help

输出示例:

Usage of duf:
  -all
    	include pseudo, duplicate, inaccessible file systems
  -hide-binds
    	hide bind mounts (default true)
  -hide-fuse
    	hide fuse devices
  -hide-local
    	hide local devices
  -hide-loops
    	hide loop devices (default true)
  -hide-network
    	hide network devices
  -hide-special
    	hide special devices
  -inodes
    	list inode information instead of block usage
  -json
    	output all devices in JSON format
  -output string
    	output fields: mountpoint, size, used, avail, usage, inodes, inodes_used, inodes_avail, inodes_usage, type, filesystem
  -sort string
    	sort output by: mountpoint, size, used, avail, usage, inodes, inodes_used, inodes_avail, inodes_usage, type, filesystem (default "mountpoint")
  -width uint
    	max output width