标签 磁盘 下的文章

Duc:一个能够洞察并可视化硬盘使用情况的工具包

Duc 是一个在类 Unix 操作系统上可以用来索引、洞察及可视化硬盘使用情况的工具包。别把它当成一个仅能用漂亮图表展现硬盘使用情况的 CLI 工具。它对巨大的文件系统也支持的很好。Duc 已在由超过五亿个文件和几 PB 的存储组成的系统上测试过,没有任何问题。

Duc 是一个快速而且灵活的工具。它将你的硬盘使用情况存在一个优化过的数据库里,这样你就可以在索引完成后迅速找到你的数据。此外,它自带不同的用户交互界面与后端以访问数据库并绘制图表。

以下列出的是目前支持的用户界面(UI):

  1. 命令行界面(duc ls
  2. Ncurses 控制台界面(duc ui
  3. X11 GUI(duc gui
  4. OpenGL GUI(duc gui

支持的后端数据库:

  • Tokyocabinet
  • Leveldb
  • Sqlite3

Duc 默认使用 Tokyocabinet 作为后端数据库。

安装 Duc

Duc 可以从 Debian 以及其衍生品例如 Ubuntu 的默认仓库中获取。因此在基于 DEB 的系统上安装 Duc 是小菜一碟。

$ sudo apt-get install duc

在其它 Linux 发行版上你需要像以下所展示的那样手动从源代码编译安装 Duc。

可以从 Github 上的发行页面下载最新的 Duc 源代码的 .tgz 文件。在写这篇教程的时候,最新的版本是1.4.4。

$ wget https://github.com/zevv/duc/releases/download/1.4.4/duc-1.4.4.tar.gz

然后一个接一个地运行以下命令来安装 DUC。

$ tar -xzf duc-1.4.4.tar.gz
$ cd duc-1.4.4
$ ./configure
$ make
$ sudo make install

使用 Duc

duc 的典型用法是:

$ duc <subcommand> <options>

你可以通过运行以下命令来浏览总的选项列表以及子命令:

$ duc help

你也可以像下面这样了解一个特定子命令的用法。

$ duc help <subcommand>

要查看所有命令与其选项的列表,仅需运行:

$ duc help --all

让我们看看一些 duc 工具的特定用法。

创建索引(数据库)

首先,你需要创建一个你文件系统的索引文件(数据库)。使用 duc index 命令以创建索引文件。

比如说,要创建你的 /home 目录的索引,仅需运行:

$ duc index /home

上述命令将会创建你的 /home 目录的索引,并将其保存在 $HOME/.duc.db 文件中。如果你以后需要往 /home 目录添加新的文件或目录,只要在之后重新运行一下上面的命令来重建索引。

查询索引

Duc 有不同的子命令来查询并探索索引。

要查看可访问的索引列表,运行:

$ duc info

示例输出:

Date Time Files Dirs Size Path
2019-04-09 15:45:55 3.5K 305 654.6M /home

如你在上述输出所见,我已经索引好了 /home 目录。

要列出当前工作目录中所有的文件和目录,你可以这样做:

$ duc ls

要列出指定的目录,例如 /home/sk/Downloads 中的文件/目录,仅需像下面这样将路径作为参数传过去。

$ duc ls /home/sk/Downloads

类似的,运行 duc ui 命令来打开基于 ncurses 的控制台用户界面以探索文件系统使用情况,运行duc gui 以打开图形界面(X11)来探索文件系统。

要了解更多子命令的用法,仅需参考帮助部分。

$ duc help ls

上述命令将会展现 ls 子命令的帮助部分。

可视化硬盘使用状况

在之前的部分我们以及看到如何用 duc 子命令列出文件和目录。在此之外,你甚至可以用一张漂亮的图表展示文件大小。

要展示所提供目录的图表,像以下这样使用 ls 子命令。

$ duc ls -Fg /home/sk

示例输出:

使用 “duc ls” 命令可视化硬盘使用情况

如你在上述输出所见,ls 子命令查询 duc 数据库并列出了所提供目录包含的文件与目录的大小,在这里就是 /home/sk/

这里 -F 选项是往条目中用来添加文件类型指示符(/),-g 选项是用来绘制每个条目相对大小的图表。

请注意如果未提供任何路径,就会使用当前工作目录。

你可以使用 -R 选项来用树状结构浏览硬盘使用情况。

$ duc ls -R /home/sk

用树状结构可视化硬盘使用情况

要查询 duc 数据库并打开基于 ncurses 的控制台以探索所提供的目录,像以下这样使用 ui 子命令。

$ duc ui /home/sk

类似的,我们使用 gui * 子命令来查询 duc 数据库以及打开一个图形界面(X11)来了解指定路径的硬盘使用情况。

$ duc gui /home/sk

像我之前所提到的,我们可以像下面这样了解更多关于特定子命令的用法。

$ duc help <子命令名字>

我仅仅覆盖了基本用法的部分,参考 man 页面了解关于 duc 工具的更多细节。

$ man duc

相关阅读:

总结

Duc 是一款简单却有用的硬盘用量查看器。如果你想要快速简便地知道哪个文件/目录占用你的硬盘空间,Duc 可能是一个好的选择。你还等什么呢?获取这个工具,扫描你的文件系统,摆脱无用的文件/目录。

现在就到此为止了。希望这篇文章有用处。更多好东西马上就到。保持关注!

欢呼吧!

资源:


via: https://www.ostechnix.com/duc-a-collection-of-tools-to-inspect-and-visualize-disk-usage/

作者:sk 选题:lujun9972 译者:tomjlw 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

市场上有很多用来监控 Linux 系统的监控工具,当系统到达阀值后它将发送一封邮件。它监控所有的东西例如 CPU 利用率、内存利用率、交换空间利用率、磁盘空间利用率等等。然而,它更适合小环境和大环境。

想一想如果你只有少量系统,那么什么是最好的方式来应对这种情况。

是的,我们想要写一个 shell 脚本 来实现。

在这篇指南中我们打算写一个 shell 脚本来监控系统的磁盘空间使用率。当系统到达给定的阀值,它将给对应的邮件地址发送一封邮件。在这篇文章中我们总共添加了四个 shell 脚本,每个用于不同的目的。之后,我们会想出其他 shell 脚本来监控 CPU,内存和交换空间利用率。

在此之前,我想澄清一件事,根据我观察的磁盘空间使用率 shell 脚本使用情况。

大多数用户在多篇博客中评论说,当他们运行磁盘空间使用率脚本时他们获得了以下错误。

# sh /opt/script/disk-usage-alert-old.sh

/dev/mapper/vg_2g-lv_root
test-script.sh: line 7: [: /dev/mapper/vg_2g-lv_root: integer expression expected
/ 9.8G

是的,这是对的。甚至,当我第一次运行这个脚本的时候我遇到了相同的问题。之后,我发现了根本原因。

当你在基于 RHEL 5 & RHEL 6 的系统上运行包含用于磁盘空间警告的 df -hdf -H 的 shell 脚本中时,你会发现上述错误信息,因为输出格式不对,查看下列输出。

为了解决这个问题,我们需要用 df -Ph (POSIX 输出格式),但是默认的 df -h 在基于 RHEL 7 的系统上运行的很好。

# df -h

Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_2g-lv_root
                       10G  6.7G  3.4G  67% /
tmpfs                 7.8G     0  7.8G   0% /dev/shm
/dev/sda1             976M   95M  830M  11% /boot
/dev/mapper/vg_2g-lv_home
                      5.0G  4.3G  784M  85% /home
/dev/mapper/vg_2g-lv_tmp
                      4.8G   14M  4.6G   1% /tmp

方法一:Linux Shell 脚本来监控磁盘空间使用率和发送邮件

你可以使用下列 shell 脚本在 Linux 系统中来监控磁盘空间使用率。

当系统到达给定的阀值限制时,它将发送一封邮件。在这个例子中,我们设置阀值为 60% 用于测试目的,你可以改变这个限制来符合你的需求。

如果超过一个文件系统到达给定的阀值,它将发送多封邮件,因为这个脚本使用了循环。

同样,替换你的邮件地址来获取这份警告。

# vi /opt/script/disk-usage-alert.sh

#!/bin/sh
df -Ph | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5,$1 }' | while read output;
do
  echo $output
  used=$(echo $output | awk '{print $1}' | sed s/%//g)
  partition=$(echo $output | awk '{print $2}')
  if [ $used -ge 60 ]; then
  echo "The partition \"$partition\" on $(hostname) has used $used% at $(date)" | mail -s "Disk Space Alert: $used% Used On $(hostname)" [email protected]
  fi
done

输出:我获得了下列两封邮件警告。

The partition "/dev/mapper/vg_2g-lv_home" on 2g.CentOS7 has used 85% at Mon Apr 29 06:16:14 IST 2019

The partition "/dev/mapper/vg_2g-lv_root" on 2g.CentOS7 has used 67% at Mon Apr 29 06:16:14 IST 2019

最终添加了一个 cronjob 来自动完成。它会每 10 分钟运行一次。

# crontab -e
*/10 * * * * /bin/bash /opt/script/disk-usage-alert.sh

方法二:Linux Shell 脚本来监控磁盘空间使用率和发送邮件

作为代替,你可以使用下列的 shell 脚本。对比上面的脚本我们做了少量改变。

# vi /opt/script/disk-usage-alert-1.sh

#!/bin/sh
df -Ph | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5,$1 }' | while read output;
do
  max=60%
  echo $output
  used=$(echo $output | awk '{print $1}')
  partition=$(echo $output | awk '{print $2}')
  if [ ${used%?} -ge ${max%?} ]; then
  echo "The partition \"$partition\" on $(hostname) has used $used at $(date)" | mail -s "Disk Space Alert: $used Used On $(hostname)" [email protected]
  fi
done

输出:我获得了下列两封邮件警告。

The partition "/dev/mapper/vg_2g-lv_home" on 2g.CentOS7 has used 85% at Mon Apr 29 06:16:14 IST 2019

The partition "/dev/mapper/vg_2g-lv_root" on 2g.CentOS7 has used 67% at Mon Apr 29 06:16:14 IST 2019

最终添加了一个 cronjob 来自动完成。它会每 10 分钟运行一次。

# crontab -e
*/10 * * * * /bin/bash /opt/script/disk-usage-alert-1.sh

方法三:Linux Shell 脚本来监控磁盘空间使用率和发送邮件

我更喜欢这种方法。因为,它工作起来很有魔力,你只会收到一封关于所有事的邮件。

这相当简单和直接。

*/10 * * * * df -Ph | sed s/%//g | awk '{ if($5 > 60) print $0;}' | mail -s "Disk Space Alert On $(hostname)" [email protected]

输出: 我获得了一封关于所有警告的邮件。

Filesystem                            Size  Used Avail Use Mounted on
/dev/mapper/vg_2g-lv_root              10G  6.7G  3.4G  67 /
/dev/mapper/vg_2g-lv_home             5.0G  4.3G  784M  85 /home

方法四:Linux Shell 脚本来监控某个分区的磁盘空间使用情况和发送邮件

# vi /opt/script/disk-usage-alert-2.sh

#!/bin/bash
used=$(df -Ph | grep '/dev/mapper/vg_2g-lv_dbs' | awk {'print $5'})
max=80%
if [ ${used%?} -ge ${max%?} ]; then
echo "The Mount Point "/DB" on $(hostname) has used $used at $(date)" | mail -s "Disk space alert on $(hostname): $used used" [email protected]
fi

输出: 我得到了下面的邮件警告。

The partition /dev/mapper/vg_2g-lv_dbs on 2g.CentOS6 has used 82% at Mon Apr 29 06:16:14 IST 2019

最终添加了一个 cronjob 来自动完成这些工作。它将每 10 分钟运行一次。

# crontab -e
*/10 * * * * /bin/bash /opt/script/disk-usage-alert-2.sh

注意: 你将在 10 分钟后收到一封邮件警告,因为这个脚本被计划为每 10 分钟运行一次(但也不是精确的 10 分钟,取决于时间)。

例如这个例子。如果你的系统在 8:25 到达了限制,你将在 5 分钟后收到邮件警告。希望现在讲清楚了。


via: https://www.2daygeek.com/linux-shell-script-to-monitor-disk-space-usage-and-send-email/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:warmfrog 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在 Linux 机器中添加磁盘的逐步过程。

本文将向你介绍在 Linux 机器中添加新磁盘的步骤。将原始磁盘添加到 Linux 机器可能非常依赖于你所拥有的服务器类型,但是一旦将磁盘提供给机器,将其添加到挂载点的过程几乎相同。

目标:向服务器添加新的 10GB 磁盘,并使用 lvm 和新创建的卷组创建 5GB 装载点。

向 Linux 机器添加原始磁盘

如果你使用的是 AWS EC2 Linux 服务器,可以 按照以下步骤 添加原始磁盘。如果使用的是 VMware Linux VM,那么需要按照不同的步骤来添加磁盘。如果你正在运行物理机架设备/刀片服务器,那么添加磁盘将是一项物理任务。

一旦磁盘物理/虚拟地连接到 Linux 机器上,它将被内核识别,就可以开始了。

识别 Linux 最新添加的磁盘

原始磁盘连接后,需要让内核去 扫描新磁盘。在新版中,它主要是由内核自动完成。

第一件事是在内核中识别新添加的磁盘及其名称。实现这一点的方法有很多,以下作少量列举:

  • 可以在添加/扫描磁盘前后观察 lsblk 输出,以获取新的磁盘名。
  • 检查 /dev 文件系统中新创建的磁盘文件。匹配文件和磁盘添加时间的时间戳。
  • 观察 fdisk-l 添加/扫描磁盘前后的输出,以获取新的磁盘名。

在本示例中,我使用的是 AWS EC2 服务器,向服务器添加了 5GB 磁盘。我的 lsblk 输出如下:

[root@kerneltalks ~]# lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  10G  0 disk
├─xvda1 202:1    0   1M  0 part
└─xvda2 202:2    0  10G  0 part /
xvdf    202:80   0  10G  0 disk

可以看到 xvdf 是新添加的磁盘。完整路径是 /dev/xvdf

在 LVM 中添加新磁盘

我们这里使用 LVM,因为它是 Linux 平台上广泛使用的非常灵活的卷管理器。确认 lvm 或 lvm2 软件包已经安装在系统上。如未安装,请 安装 lvm/lvm2 程序包

现在,我们将在逻辑卷管理器中添加这个原始磁盘,并从中创建 10GB 的挂接点。所用到的命令如下:

如果要将磁盘添加到现有挂接点,并使用其空间来扩展挂接点 ,则 vgcreate 应替换为 vgextend

会话示例输出如下:

[root@kerneltalks ~]# pvcreate /dev/xvdf
  Physical volume "/dev/xvdf" successfully created.
[root@kerneltalks ~]# vgcreate vgdata /dev/xvdf
  Volume group "vgdata" successfully created
[root@kerneltalks ~]# lvcreate -L 5G -n lvdata vgdata
  Logical volume "lvdata" created.

现在,已完成逻辑卷创建。你需要使用所选的文件系统格式化它,并将其挂载。在这里选择 ext4 文件系统,并使用 mkfs.ext4 进行格式化。

[root@kerneltalks ~]# mkfs.ext4 /dev/vgdata/lvdata
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
327680 inodes, 1310720 blocks
65536 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1342177280
40 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736
 
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

在挂载点上从新磁盘挂载卷

使用 mount 命令,在 /data 安装点上安装已创建并格式化的 5GB 逻辑卷。

[root@kerneltalks ~]# mount /dev/vgdata/lvdata /data
[root@kerneltalks ~]# df -Ph /data
Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper/vgdata-lvdata  4.8G   20M  4.6G   1% /data

使用 df 命令验证挂载点。如上所述,你都完成了!你可以在 /etc/fstab 中添加一个条目,以便在重新启动时保持此装载。

你已将 10GB 磁盘连接到 Linux 计算机,并创建了 5GB 挂载点!


via: https://kerneltalks.com/hardware-config/how-to-add-new-disk-in-linux/

作者:kerneltalks 选题:lujun9972 译者:luckyele 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

大家对 du 命令应该都不陌生,它可以在类 Unix 系统中对文件和目录的空间使用情况进行计算和汇总。如果你也经常需要使用 du 命令,你会对以下内容感兴趣的。我发现了五个可以替代原有的 du 命令的更好的工具。当然,如果后续有更多更好的选择,我会继续列出来。如果你有其它推荐,也欢迎在评论中留言。

ncdu

ncdu 作为普通 du 的替代品,这在 Linux 社区中已经很流行了。ncdu 正是基于开发者们对 du 的性能不满意而被开发出来的。ncdu 是一个使用 C 语言和 ncurses 接口开发的简易快速的磁盘用量分析器,可以用来查看目录或文件在本地或远程系统上占用磁盘空间的情况。如果你有兴趣查看关于 ncdu 的详细介绍,可以浏览《如何在 Linux 上使用 ncdu 查看磁盘占用量》这一篇文章。

tin-summer

tin-summer 是使用 Rust 语言编写的自由开源工具,它可以用于查找占用磁盘空间的文件,它也是 du 命令的另一个替代品。由于使用了多线程,因此 tin-summer 在计算大目录的大小时会比 du 命令快得多。tin-summer 与 du 命令之间的区别是前者读取文件的大小,而后者则读取磁盘使用情况。

tin-summer 的开发者认为它可以替代 du,因为它具有以下优势:

  • 在大目录的操作速度上比 du 更快;
  • 在显示结果上默认采用易读格式;
  • 可以使用正则表达式排除文件或目录;
  • 可以对输出进行排序和着色处理;
  • 可扩展,等等。

安装 tin-summer

要安装 tin-summer,只需要在终端中执行以下命令:

$ curl -LSfs https://japaric.github.io/trust/install.sh | sh -s -- --git vmchale/tin-summer

你也可以使用 cargo 软件包管理器安装 tin-summer,但你需要在系统上先安装 Rust。在 Rust 已经安装好的情况下,执行以下命令:

$ cargo install tin-summer

如果上面提到的这两种方法都不能成功安装 tin-summer,还可以从它的软件发布页下载最新版本的二进制文件编译,进行手动安装。

用法

(LCTT 译注:tin-summer 的命令名为 sn

如果需要查看当前工作目录的文件大小,可以执行以下命令:

$ sn f
749 MB   ./.rustup/toolchains
749 MB   ./.rustup
147 MB   ./.cargo/bin
147 MB   ./.cargo
900 MB   .

不需要进行额外声明,它也是默认以易读的格式向用户展示数据。在使用 du 命令的时候,则必须加上额外的 -h 参数才能得到同样的效果。

只需要按以下的形式执行命令,就可以查看某个特定目录的文件大小。

$ sn f <path-to-the-directory>

还可以对输出结果进行排序,例如下面的命令可以输出指定目录中最大的 5 个文件或目录:

$ sn sort /home/sk/ -n5
749 MB /home/sk/.rustup
749 MB /home/sk/.rustup/toolchains
147 MB /home/sk/.cargo
147 MB /home/sk/.cargo/bin
2.6 MB /home/sk/mcelog
900 MB /home/sk/

顺便一提,上面结果中的最后一行是指定目录 /home/sk 的总大小。所以不要惊讶为什么输入的是 5 而实际输出了 6 行结果。

在当前目录下查找带有构建工程的目录,可以使用以下命令:

$ sn ar

tin-summer 同样支持查找指定大小的带有构建工程的目录。例如执行以下命令可以查找到大小在 100 MB 以上的带有构建工程的目录:

$ sn ar -t100M

如上文所说,tin-summer 在操作大目录的时候速度比较快,因此在操作小目录的时候,速度会相对比较慢一些。不过它的开发者已经表示,将会在以后的版本中优化这个缺陷。

要获取相关的帮助,可以执行以下命令:

$ sn --help

如果想要更详尽的介绍,可以查看这个项目的 GitHub 页面

dust

dust (含义是 du + rust = dust)使用 Rust 编写,是一个免费、开源的更直观的 du 工具。它可以在不需要 headsort 命令的情况下即时显示目录占用的磁盘空间。与 tin-summer 一样,它会默认情况以易读的格式显示每个目录的大小。

安装 dust

由于 dust 也是使用 Rust 编写,因此它也可以通过 cargo 软件包管理器进行安装:

$ cargo install du-dust

也可以从它的软件发布页下载最新版本的二进制文件,并按照以下步骤安装。在写这篇文章的时候,最新的版本是 0.3.1。

$ wget https://github.com/bootandy/dust/releases/download/v0.3.1/dust-v0.3.1-x86_64-unknown-linux-gnu.tar.gz

抽取文件:

$ tar -xvf dust-v0.3.1-x86_64-unknown-linux-gnu.tar.gz

最后将可执行文件复制到你的 $PATH(例如 /usr/local/bin)下:

$ sudo mv dust /usr/local/bin/

用法

需要查看当前目录及所有子目录下的文件大小,可以执行以下命令:

$ dust

输出示例:

带上 -p 参数可以按照从当前目录起始的完整目录显示。

$ dust -p

dust 2

如果需要查看多个目录的大小,只需要同时列出这些目录,并用空格分隔开即可:

$ dust <dir1> <dir2>

下面再多举几个例子,例如:

显示文件的长度:

$ dust -s

只显示 10 个目录:

$ dust -n 10

查看当前目录下最多 3 层子目录:

$ dust -d 3

查看帮助:

$ dust -h

如果想要更详尽的介绍,可以查看这个项目的 GitHub 页面

diskus

diskus 也是使用 Rust 编写的一个小型、快速的开源工具,它可以用于替代 du -sh 命令。diskus 将会计算当前目录下所有文件的总大小,它的效果相当于 du -shdu -sh --bytes,但其开发者表示 diskus 的运行速度是 du -sh 的 9 倍。

安装 diskus

diskus 已经存放于 Arch Linux 社区用户软件仓库 Arch Linux User-community Repository AUR)当中,可以通过任何一种 AUR 帮助工具(例如 yay)把它安装在基于 Arch 的系统上:

$ yay -S diskus

对于 Ubuntu 及其衍生发行版,可以在 diskus软件发布页上下载最新版的软件包并安装:

$ wget "https://github.com/sharkdp/diskus/releases/download/v0.3.1/diskus_0.3.1_amd64.deb"

$ sudo dpkg -i diskus_0.3.1_amd64.deb

还可以使用 cargo 软件包管理器安装 diskus,但必须在系统上先安装 Rust 1.29+。

安装好 Rust 之后,就可以使用以下命令安装 diskus

$ cargo install diskus

用法

在通常情况下,如果需要查看某个目录的大小,我会使用形如 du -sh 的命令。

$ du -sh dir

这里的 -s 参数表示显示总大小。

如果使用 diskus,直接就可以显示当前目录的总大小。

$ diskus

我使用 diskus 查看 Arch Linux 系统上各个目录的总大小,这个工具的速度确实比 du -sh 快得多。但是它目前只能显示当前目录的大小。

要获取相关的帮助,可以执行以下命令:

$ diskus -h

如果想要更详尽的介绍,可以查看这个项目的 GitHub 页面

duu

duu 是 Directory Usage Utility 的缩写。它是使用 Python 编写的查看指定目录大小的工具。它具有跨平台的特性,因此在 Windows、Mac OS 和 Linux 系统上都能够使用。

安装 duu

安装这个工具之前需要先安装 Python 3。不过目前很多 Linux 发行版的默认软件仓库中都带有 Python 3,所以这个依赖并不难解决。

Python 3 安装完成后,从 duu软件发布页下载其最新版本。

$ wget https://github.com/jftuga/duu/releases/download/2.20/duu.py

用法

要查看当前目录的大小,只需要执行以下命令:

$ python3 duu.py

输出示例:

从上图可以看出,duu 会显示当前目录下文件的数量情况,按照 Byte、KB、MB 单位显示这些文件的总大小,以及每个文件的大小。

如果需要查看某个目录的大小,只需要声明目录的绝对路径即可:

$ python3 duu.py /home/sk/Downloads/

如果想要更详尽的介绍,可以查看这个项目的 GitHub 页面

以上就是 du 命令的五种替代方案,希望这篇文章能够帮助到你。就我自己而言,我并不会在这五种工具之间交替使用,我更喜欢使用 ncdu。欢迎在下面的评论区发表你对这些工具的评论。


via: https://www.ostechnix.com/some-good-alternatives-to-du-command/

作者:SK 选题:lujun9972 译者:HankChow 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在本指南中,我们将学习如何使用 df 命令。df 命令是 “Disk Free” 的首字母组合,它报告文件系统磁盘空间的使用情况。它显示一个 Linux 系统中文件系统上可用磁盘空间的数量。df 命令很容易与 du 命令混淆。它们的用途不同。df 命令报告我们拥有多少磁盘空间(空闲磁盘空间),而 du 命令报告被文件和目录占用了多少磁盘空间。希望我这样的解释你能更清楚。在继续之前,我们来看一些 df 命令的实例,以便于你更好地理解它。

df 命令使用举例

1、查看整个文件系统磁盘空间使用情况

无需任何参数来运行 df 命令,以显示整个文件系统磁盘空间使用情况。

$ df

示例输出:

Filesystem 1K-blocks Used Available Use% Mounted on
dev 4033216 0 4033216 0% /dev
run 4038880 1120 4037760 1% /run
/dev/sda2 478425016 428790352 25308980 95% /
tmpfs 4038880 34396 4004484 1% /dev/shm
tmpfs 4038880 0 4038880 0% /sys/fs/cgroup
tmpfs 4038880 11636 4027244 1% /tmp
/dev/loop0 84096 84096 0 100% /var/lib/snapd/snap/core/4327
/dev/sda1 95054 55724 32162 64% /boot
tmpfs 807776 28 807748 1% /run/user/1000

正如你所见,输出结果分为六列。我们来看一下每一列的含义。

  • Filesystem – Linux 系统中的文件系统
  • 1K-blocks – 文件系统的大小,用 1K 大小的块来表示。
  • Used – 以 1K 大小的块所表示的已使用数量。
  • Available – 以 1K 大小的块所表示的可用空间的数量。
  • Use% – 文件系统中已使用的百分比。
  • Mounted on – 已挂载的文件系统的挂载点。

2、以人类友好格式显示文件系统硬盘空间使用情况

在上面的示例中你可能已经注意到了,它使用 1K 大小的块为单位来表示使用情况,如果你以人类友好格式来显示它们,可以使用 -h 标志。

$ df -h
Filesystem Size Used Avail Use% Mounted on
dev 3.9G 0 3.9G 0% /dev
run 3.9G 1.1M 3.9G 1% /run
/dev/sda2 457G 409G 25G 95% /
tmpfs 3.9G 27M 3.9G 1% /dev/shm
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
tmpfs 3.9G 12M 3.9G 1% /tmp
/dev/loop0 83M 83M 0 100% /var/lib/snapd/snap/core/4327
/dev/sda1 93M 55M 32M 64% /boot
tmpfs 789M 28K 789M 1% /run/user/1000

现在,在 Size 列和 Avail 列,使用情况是以 GB 和 MB 为单位来显示的。

3、仅以 MB 为单位来显示文件系统磁盘空间使用情况

如果仅以 MB 为单位来显示文件系统磁盘空间使用情况,使用 -m 标志。

$ df -m
Filesystem 1M-blocks Used Available Use% Mounted on
dev 3939 0 3939 0% /dev
run 3945 2 3944 1% /run
/dev/sda2 467212 418742 24716 95% /
tmpfs 3945 26 3920 1% /dev/shm
tmpfs 3945 0 3945 0% /sys/fs/cgroup
tmpfs 3945 12 3933 1% /tmp
/dev/loop0 83 83 0 100% /var/lib/snapd/snap/core/4327
/dev/sda1 93 55 32 64% /boot
tmpfs 789 1 789 1% /run/user/1000

4、列出节点而不是块的使用情况

如下所示,我们可以通过使用 -i 标记来列出节点而不是块的使用情况。

$ df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
dev 1008304 439 1007865 1% /dev
run 1009720 649 1009071 1% /run
/dev/sda2 30392320 844035 29548285 3% /
tmpfs 1009720 86 1009634 1% /dev/shm
tmpfs 1009720 18 1009702 1% /sys/fs/cgroup
tmpfs 1009720 3008 1006712 1% /tmp
/dev/loop0 12829 12829 0 100% /var/lib/snapd/snap/core/4327
/dev/sda1 25688 390 25298 2% /boot
tmpfs 1009720 29 1009691 1% /run/user/1000

5、显示文件系统类型

使用 -T 标志显示文件系统类型。

$ df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
dev devtmpfs 4033216 0 4033216 0% /dev
run tmpfs 4038880 1120 4037760 1% /run
/dev/sda2 ext4 478425016 428790896 25308436 95% /
tmpfs tmpfs 4038880 31300 4007580 1% /dev/shm
tmpfs tmpfs 4038880 0 4038880 0% /sys/fs/cgroup
tmpfs tmpfs 4038880 11984 4026896 1% /tmp
/dev/loop0 squashfs 84096 84096 0 100% /var/lib/snapd/snap/core/4327
/dev/sda1 ext4 95054 55724 32162 64% /boot
tmpfs tmpfs 807776 28 807748 1% /run/user/1000

正如你所见,现在出现了显示文件系统类型的额外的列(从左数的第二列)。

6、仅显示指定类型的文件系统

我们可以限制仅列出某些文件系统。比如,只列出 ext4 文件系统。我们使用 -t 标志。

$ df -t ext4
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 478425016 428790896 25308436 95% /
/dev/sda1 95054 55724 32162 64% /boot

看到了吗?这个命令仅显示了 ext4 文件系统的磁盘空间使用情况。

7、不列出指定类型的文件系统

有时,我们可能需要从结果中去排除指定类型的文件系统。我们可以使用 -x 标记达到我们的目的。

$ df -x ext4
Filesystem 1K-blocks Used Available Use% Mounted on
dev 4033216 0 4033216 0% /dev
run 4038880 1120 4037760 1% /run
tmpfs 4038880 26116 4012764 1% /dev/shm
tmpfs 4038880 0 4038880 0% /sys/fs/cgroup
tmpfs 4038880 11984 4026896 1% /tmp
/dev/loop0 84096 84096 0 100% /var/lib/snapd/snap/core/4327
tmpfs 807776 28 807748 1% /run/user/1000

上面的命令列出了除 ext4 类型以外的全部文件系统。

8、显示一个目录的磁盘使用情况

去显示某个目录的硬盘空间使用情况以及它的挂载点,例如 /home/sk/ 目录,可以使用如下的命令:

$ df -hT /home/sk/
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 ext4 457G 409G 25G 95% /

这个命令显示文件系统类型、以人类友好格式显示已使用和可用磁盘空间、以及它的挂载点。如果你不想去显示文件系统类型,只需要忽略 -t 标志即可。

更详细的使用情况,请参阅 man 手册页。

$ man df

今天就到此这止!我希望对你有用。还有更多更好玩的东西即将奉上。请继续关注!

再见!


via: https://www.ostechnix.com/the-df-command-tutorial-with-examples-for-beginners/

作者:SK 选题:lujun9972 译者:qhwdw 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

查看硬盘使用情况对于类 Unix 操作系统来说不是什么大问题。我们有一个名为 du 的内置命令,可以在几分钟之内计算和汇总磁盘空间的使用情况。此外,我们还有一些第三方工具,比如 NcduAgedu,它们也可以用来追踪磁盘使用情况。如您所见,这些都是命令行中的实用程序,磁盘使用情况将以纯文本的形式显示。但是,有些人希望以可视化、图表的形式查看结果。别担心!我知道一个 GUI 工具可以显示磁盘使用细节。它就是 “Filelight”,这是一个图形化实用程序,用于可视化显示 Linux 系统上的磁盘使用情况,并以彩色径向图显示结果。Filelight 是历史最悠久的项目之一,它已经存在了很长时间,它完全免费使用并开源。

安装 Filelight

Filelight 是 KDE 应用程序的一部分,并预装在基于 KDE 的 Linux 发行版上。

如果您使用的是非 KDE 发行版,官方存储库中包含了 Filelight,因此您可以使用默认的包管理器进行安装。

在 Arch Linux 及其衍生版,如 Antergos、Manjaro Linux 中,Filelight 可以按照如下方法安装。

$ sudo pacman -S filelight

在 Debian、Ubuntu、Linux Mint 中,

$ sudo apt install filelight

在 Fedora 中,

$ sudo dnf install filelight

在 openSUSE 中,

$ sudo zypper install filelight

可视化查看 Linux 系统上的磁盘使用情况

安装后,从菜单或应用程序启动器启动 Filelight。

Filelight 以图形方式将您的文件系统表示为一组同心圆环段。

如您所见,Filelight 默认显示磁盘中 //boot 文件系统的使用情况。

您还可以选择扫描的各个文件夹,以查看该特定文件夹的磁盘使用情况。为此,请到 “Filelight -> Scan -> Scan Folder” 并选择要扫描的文件夹。

Filelight 在扫描时排除以下目录:

  • /dev
  • /proc
  • /sys
  • /root

此选项有助于跳过您可能没有权限读取的目录,或者属于虚拟文件系统的文件夹,例如 /proc

如果您想要在此列表中增加文件夹,请到 “Filelight -> Settings -> Scanning” 并点击 “Add” 按钮然后选择您想要增加的文件夹。

类似的,要想从此列表中移除某个文件夹,选择文件夹并点击 “Remove”。

如果您想要改变 Filelight 的外观,请到 “Settings - > Appearance” 栏,按照您的喜好改变配色方案。

径向图中的每个段用不同的颜色表示。下图显示了 / 文件系统的整个径向布局。要查看文件和文件夹的完整信息,只需将鼠标指针悬停在它们上边。

只需点击相应的段即可浏览文件系统。要查看某个文件或文件夹的磁盘使用情况,只需单击它们即可获得该特定文件夹、文件的完整磁盘使用情况。

不仅仅是本地文件系统,Filelight 还能够扫描远程磁盘和可移动磁盘。 如果您使用任何基于 KDE 的 Linux 发行版,它可以集成到 Konqueror、Dolphin 和 Krusader 等文件管理器中。

与 CLI 实用程序不同,您不必使用任何额外的参数或选项来以易读的(而非乱码的)格式查看结果。 默认情况下,Filelight 将自动以易读的格式显示磁盘使用情况。

总结

使用 Filelight,您可以快速找到文件系统中占用磁盘空间的位置,并通过删除不需要的文件或文件夹释放空间。 如果您正在寻找一些简单且易上手的图形界面磁盘使用情况查看器,那么 Filelight 值得一试。

就是这样。希望这篇文章对您有用。更多的好文章,敬请关注!

干杯!


via: https://www.ostechnix.com/filelight-visualize-disk-usage-on-your-linux-system/

作者:SK 选题:lujun9972 译者:XiatianSummer 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出