ncdu使用ncdu分析Linux中的磁盘使用情况

时间:2020-02-23 14:31:23  来源:igfitidea点击:

我们在审核Linux系统上的磁盘利用率时遇到困难吗?我知道大多数Linux系统管理员习惯于使用" du"命令来检查消耗更多磁盘空间的文件或者查找实际文件大小。我总是运行下面的命令来查找指定目录中的文件,并按大小从大到小排序:

$find /dir -type f -exec du -Sh {} + | sort -rh

我们可以通过将其通过管道传递到head来进一步限制输出结果

$find /dir -type f -exec du -Sh {} + | sort -rh | head -n 10

仅打印前10个文件

或者仅使用du命令:

$du -sh /dir/* | sort -hr

在本指南中,我将向我们介绍Ncdu一个具有ncurses接口的磁盘使用情况分析器。 Ncdu旨在缓解我们在没有完整图形设置可用的远程服务器上寻找太空猪的麻烦,但即使在常规台式机系统上,它也是一个有用的工具。

Ncdu旨在快速,简单和易于使用,并且应该能够在安装了ncurses的任何最小的POSIX类似环境中运行。默认情况下,它将显示从大到小排序的文件/目录磁盘使用情况:

在Linux上安装Ncdu

Ncdu软件包可从上游存储库在大多数Linux发行版中使用。让我们看看如何在CentOS,Debian系列发行版和Arch Linux上安装ncdu软件包。

在Arch Linux上安装Ncdu

使用以下命令:

$sudo pacman -S ncdu

resolving dependencies...
looking for conflicting packages...

Packages (1) ncdu-1.13-1

Total Installed Size: 0.11 MiB

:: Proceed with installation? [Y/n] y
(1/1) checking keys in keyring [################] 100%
(1/1) checking package integrity [################] 100%
(1/1) loading package files [################] 100%
(1/1) checking for file conflicts [################] 100%
(1/1) checking available disk space [################] 100%
:: Processing package changes...
(1/1) installing ncdu [################] 100%
:: Running post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate...

在Ubuntu/Debian上安装Ncdu

在Ubuntu和所有其他Debian系列发行版上,使用apt软件包管理器安装ncdu。

$sudo apt-get install ncdu

在CentOS/Fedora上安装Ncdu

在CentOS和Fedora上,可从EPEL存储库中获得该软件包。首先添加它,然后使用yum安装ncdu。

$sudo yum install epel-release
$sudo yum provides ncdu 
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: centosmirror.netcup.net
* epel: mirror.imt-systems.com
* extras: mirror.netcologne.de
* updates: mirror.softaculous.com
ncdu-1.13-1.el7.x86_64 : Text-based disk usage viewer
Repo : epel
$sudo yum install ncdu
$sudo dnf install ncdu  # For Fedora

使用Ncdu审核磁盘使用情况

将软件包安装在操作系统上后,只需运行:

$ncdu/dir /

Ncdu还提供了许多操作文件和文件夹的选项导航,排序甚至删除:上,k用于将光标向上移动,j用于将光标向下移动,输入,l>向左打开所选目录,<,h这将打开父目录n按名称排序(再次按降序排列)s按文件大小排序(再次按降序排列)d删除所选文件或者目录g在排序时在文件之前显示百分比和/或者图表。c切换子项计数的显示。bSpawn当前目录中的shell。i显示有关所选项目的信息r刷新/重新计算当前目录。q退出ncdu

示例1:使用>导航

示例2:使用g显示百分比和/或者图形

示例2:使用d删除文件

示例3:扫描整个文件系统

# ncdu -x /

由于扫描大型目录可能需要一段时间,因此我们可以扫描目录并导出结果以供以后查看:

# ncdu -1xo-/| gzip >export.gz
# ...some time later:
# zcat export.gz | ncdu -f

扫描完成后,我们还可以导出目录并浏览目录:

# ncdu -o- | tee export.file | ./ncdu -f

使用gzip压缩也可以做到这一点,但有点麻烦:

# ncdu -o- | gzip | tee export.gz | gunzip | ./ncdu -f

要远程扫描系统,但在本地浏览文件:

# ssh -C theitroad@localhost ncdu -o-/| ./ncdu -f

Ncdu扫描选项

这些选项影响扫描进度,并且从文件导入目录信息时不起作用。

-X
请勿越过文件系统边界,即仅将与正在扫描的目录位于同一文件系统上的文件和目录计数。

排除模式
排除与PATTERN匹配的文件。默认情况下,这些文件仍将显示,但不计入磁盘使用情况统计信息。可以多次添加此参数以添加更多模式。

-X文件,从文件中排除
排除与FILE中的任何模式匹配的文件。模式应该用换行符分隔。

排除缓存
排除包含CACHEDIR.TAG的目录。目录仍将显示,但不显示其内容,并且不计入磁盘使用情况统计信息。请参阅http://www.brynosaurus.com/cachedir/