系统用久了,占用磁盘会越来越多. 以至于到后面你都不知道究竟是什么东西占用了这么多磁盘空间.
虽然现在硬盘越来越便宜, 我们的硬盘可能早就是512G甚至是1TB起步了. 但在很多场景之下, 我们仍然会有查找磁盘占用的原因及清理磁盘. 特别是做开发, 各种开发缓存占用的磁盘越来越大, 及时清理有时候非常有必要.
这个时候,我们就需要一个好的磁盘空间管理工具.而今天我要介绍的就是一个高效的开源的磁盘管理工具 -- NCDU
ncdu是什么
ncdu全称是NCurses Disk Usage
, 是一款C编写的, 以命令行为界面,支持 POSIX-like系统的磁盘分析与管理工具.
优势在于:
- 基于C语言实现, 所以它分析与扫描磁盘的性能与效率非常高
- 以命令行为界面, 意味着你不需要GUI就能使用它. 这不仅更高效, 还支持无GUI的Linux服务器.
- 简单,方便,易于使用
不足在于:
- 不支持Windows
这意味着你如果是使用Windows, 你就没法使用它. 但你可以在Linux或MacOS等POSIX类系统上使用它. 特别是对无GUI的Linux服务器, 使用它会非常方便.
效果
先了解下ncdu的使用效果
NCDU效果图
如上图所示, 使用ncdu扫描完成你的磁盘目录后, 它会在你的terminal界面上, 以列表的形式,按照大小顺序直观的展示不同目录占用的空间.
你可以在这个界面上,轻松的:
- 进入或退出某个目录, 查看任意目录的空间占用情况
- 按
D
键,直接删除某个文件或目录,进行清理
相比其它一些扫描与分析工具, ncdu简单,直观,而且极为高效. 特别是你的Linux服务器, 用它来了解磁盘使用情况, 再好不过了.
安装与使用
安装
在你的Linux系统上, 使用系统自带的包管理器来安装它, 是最方便快捷的
Debian/Ubuntu类
代码语言:javascript复制sudo apt install ncdu
RHEL/CentOS类
代码语言:javascript复制sudo apt install ncdu
Arch Linux类
代码语言:javascript复制sudo pacman -S ncdu
OpenSUSE/SUSE类
代码语言:javascript复制sudo zypper in ncdu
如果你是MacOS系统, 基于brew
来安装是最方便的
brew install ncdu
使用
在命令行下,直接ncdu
就能使用它. 不过这样默认是扫描当前目录
扫描整个系统
代码语言:javascript复制sudo ncdu /
扫描指定目录
代码语言:javascript复制# 扫描/opt目录
sudo ncdu /opt
排除指定目录
代码语言:javascript复制# 扫描整个系统,但排除 /opt,/tmp两个子目录
sudo ncdu / --exclude=/opt --exclude=/tmp
扫描会非常快, 完成后, 你可以用键盘来方便的查阅结果, 进入及退出任意目录.
- 在某个目录或文件下, 按
D
键会触发删除 (删除是完全删除,不是删除到回收站) - 选择某个目录, 按
Enter
键进入目录,继续查阅
最后
这个ncdu
工具是我用过的最方便的工具, 它不仅快, 最重要的是轻松让我知道哪些目录, 哪些程序使用了空间.
当然,它有一定的危险性, 比如几乎可以删除任何目录, 但有些系统目录是不能删除的. 这一点要特别注意. 但是做为程序员, 这个点想必是你能轻松应对的.
最重要的是, 在无GUI的Linux上安装这个工具, 最方便不过了. 如果你想给你的Linux找一款更好的磁盘分析与管理工具, NCDU是一个非常不错的选择.