超实用dysk使用指南:Linux文件系统监控新范式
你是否还在为df命令输出的杂乱信息而头疼?是否需要一个更直观、更灵活的工具来监控Linux文件系统?本文将带你全面掌握开源工具dysk,从安装到高级用法,让文件系统信息一目了然。读完本文,你将能够:
- 快速安装并配置dysk
- 自定义文件系统信息表格展示
- 使用高级过滤功能精准定位特定文件系统
- 导出数据为JSON/CSV格式进行二次处理
- 通过排序功能优化信息展示顺序
1. dysk简介:超越df的文件系统监控工具
dysk是一款Linux/Mac平台的文件系统信息查看工具,旨在提供比传统df命令更友好、更强大的用户体验。其核心优势包括:
- 可视化表格展示:默认以清晰的表格形式展示关键信息
- 高度自定义列:可按需选择显示的文件系统属性列
- 强大过滤功能:支持复杂条件筛选特定文件系统
- 多格式输出:支持表格、JSON、CSV等多种输出格式
- 智能设备分类:自动识别并标记SSD、HDD、USB等设备类型

2. 安装指南:多种方式快速部署
2.1 预编译二进制包(推荐)
从dysk发布页面下载对应系统架构的二进制包,解压后即可使用:
# 下载最新版本(请替换为实际版本号)
wget https://dystroy.org/dysk/download/dysk-v1.12.0-x86_64-linux.tar.gz
tar -xzf dysk-v1.12.0-x86_64-linux.tar.gz
sudo cp dysk /usr/local/bin/
2.2 使用Cargo安装
如果你已安装Rust开发环境,可通过cargo直接安装:
cargo install --locked dysk
2.3 从源码编译
# 克隆仓库
git clone https://gitcode.com/gh_mirrors/dy/dysk.git
cd dysk
# 编译并安装
cargo install --locked --path .
3. 快速入门:dysk基础用法
3.1 基本命令
# 显示默认文件系统信息
dysk
# 显示所有文件系统(包括虚拟文件系统)
dysk -a
# 查看当前目录所在文件系统
dysk .
3.2 查看可用列
dysk提供了丰富的文件系统属性列,使用--list-cols查看所有可用列:
dysk --list-cols
主要列说明:
| 列名 | 默认显示 | 说明 |
|---|---|---|
| filesystem | ✓ | 文件系统路径 |
| label | 文件系统标签 | |
| type | ✓ | 文件系统类型 |
| disk | ✓ | 存储设备类型标识 |
| used | ✓ | 已使用空间 |
| use | ✓ | 使用百分比图形展示 |
| free | ✓ | 可用空间 |
| size | ✓ | 总大小 |
| mount | ✓ | 挂载点 |
| dev | 设备ID | |
| inodes | inode使用情况 |
4. 高级定制:列配置与排序
4.1 自定义列显示
使用-c或--cols参数自定义显示列:
# 仅显示标签、设备、使用情况和挂载点
dysk -c label+dev+use+mount
# 在默认列基础上添加inode信息
dysk -c +inodes
# 移除默认的filesystem列,添加label列到开头
dysk -c label+-filesystem

4.2 排序功能
使用-s或--sort参数按指定列排序:
# 按设备ID排序
dysk -s dev
# 按可用空间降序排序
dysk -s free-d
# 按文件系统类型升序排序
dysk --sort type-asc
5. 精准筛选:高级过滤功能
dysk提供强大的过滤功能,使用-f或--filter参数实现复杂条件筛选。
5.1 基本过滤
# 筛选ext4类型的文件系统
dysk -f 'type=ext4'
# 筛选可用空间小于100G的文件系统
dysk -f 'free<100G'
# 筛选远程文件系统
dysk -f 'remote=true'
5.2 复合条件过滤
使用逻辑运算符组合多个条件:
# 筛选类型为xfs且可用空间大于100G的文件系统
dysk -f 'type=xfs & free>100G'
# 筛选可用空间小于50G或使用率超过80%的文件系统
dysk -f 'free<50G | use>80%'
# 筛选不是SSD且使用率低于50%的本地文件系统
dysk -f 'disk<>SSD & use<50% & remote=false'

5.3 支持的运算符
| 运算符 | 说明 | 示例 |
|---|---|---|
| = | 模糊匹配 | type=xfs |
| == | 精确匹配 | filesystem==/dev/sda1 |
| < | 小于 | free<50G |
| > | 大于 | use>80% |
| <= | 小于等于 | size<=1T |
| >= | 大于等于 | used>=100G |
| <> | 不等于 | disk<>SSD |
| & | 逻辑与 | type=ext4 & remote=false |
| | | 逻辑或 | free<50G | use>80% |
| ! | 逻辑非 | !remote |
| () | 分组 | (type=xfs | type=ext4) & use>80% |
6. 数据导出:JSON与CSV格式
6.1 JSON格式输出
使用-j或--json参数输出JSON格式数据:
# 基本JSON输出
dysk -j
# 结合jq工具筛选特定信息
dysk -j | jq '.[].mount' # 仅显示所有挂载点
# 筛选可用空间小于100G的文件系统并格式化输出
dysk -j -f 'free<100G' | jq '.[] | {mount: .mount-point, free: .stats.available}'

6.2 CSV格式输出
使用--csv参数导出为CSV格式:
# 基本CSV输出
dysk --csv > filesystems.csv
# 自定义分隔符和列
dysk --csv --csv-separator ';' -c mount+size+use > fs.csv
7. 实战案例:dysk高级应用场景
7.1 系统磁盘监控脚本
#!/bin/bash
# 检查磁盘空间并发送警报
THRESHOLD=85 # 使用率阈值(百分比)
ALERT_EMAIL="admin@example.com"
# 使用dysk获取使用率超过阈值的文件系统
dysk -j -f "use>${THRESHOLD}%" | jq -r '.[] | .mount-point + " " + .stats."used-percent"' | while read -r mount usage; do
echo "警告: 文件系统 $mount 使用率达到 $usage" | mail -s "磁盘空间警报" $ALERT_EMAIL
done
7.2 生成磁盘使用报告
#!/bin/bash
# 生成HTML格式的磁盘使用报告
REPORT_FILE="disk_report.html"
echo "<html><head><title>磁盘使用报告</title></head><body>" > $REPORT_FILE
echo "<h1>磁盘使用报告 $(date)</h1>" >> $REPORT_FILE
# 添加表格
echo "<table border='1'>" >> $REPORT_FILE
echo "<tr><th>挂载点</th><th>文件系统</th><th>总大小</th><th>已使用</th><th>可用</th><th>使用率</th></tr>" >> $REPORT_FILE
dysk --csv -c mount+filesystem+size+used+free+use | tail -n +2 | while IFS=',' read -r mount fs size used free use; do
# 为高使用率行添加红色背景
if [[ $use == *"%" ]]; then
usage=${use%?}
if [ $usage -gt 80 ]; then
echo "<tr style='background-color: #ffcccc;'><td>$mount</td><td>$fs</td><td>$size</td><td>$used</td><td>$free</td><td>$use</td></tr>" >> $REPORT_FILE
continue
fi
fi
echo "<tr><td>$mount</td><td>$fs</td><td>$size</td><td>$used</td><td>$free</td><td>$use</td></tr>" >> $REPORT_FILE
done
echo "</table></body></html>" >> $REPORT_FILE
echo "报告已生成: $REPORT_FILE"
8. 命令参考:常用选项速查表
| 选项 | 缩写 | 说明 |
|---|---|---|
| --all | -a | 显示所有文件系统 |
| --cols | -c | 自定义显示列 |
| --filter | -f | 过滤文件系统 |
| --sort | -s | 按指定列排序 |
| --json | -j | 输出JSON格式 |
| --csv | 输出CSV格式 | |
| --csv-separator | 指定CSV分隔符 | |
| --list-cols | 列出所有可用列 | |
| --units | -u | 指定单位(SI/binary/bytes) |
| --ascii | 使用ASCII字符渲染表格 | |
| --help | 显示帮助信息 | |
| --version | 显示版本信息 |
9. 总结与展望
dysk作为一款现代化的文件系统信息查看工具,凭借其直观的表格展示、强大的自定义功能和灵活的数据导出能力,极大地提升了Linux系统管理员的工作效率。无论是日常系统监控还是编写自动化脚本,dysk都能提供精准、高效的支持。
随着项目的不断发展,未来dysk可能会加入更多高级功能,如实时监控、历史趋势分析等。作为用户,你可以通过项目的贡献指南参与到dysk的开发中,提交bug报告或功能建议。
9.1 学习资源
- 官方文档:https://dystroy.org/dysk
- 项目仓库:https://gitcode.com/gh_mirrors/dy/dysk
- 社区讨论:项目issue跟踪系统
9.2 下期预告
下一篇文章将深入探讨dysk的内部工作原理,包括如何解析文件系统信息、与系统API交互的细节,以及如何为dysk贡献代码。敬请关注!
如果你觉得本文对你有帮助,请点赞、收藏并关注作者,获取更多Linux系统管理工具的使用技巧!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



