Linux系统诊断工具 - 快速收集和输出系统资源监控与进程分析信息
topwho 是一个轻量级的Linux系统诊断工具,通过Shell脚本实现,可以快速收集CPU、内存、网络、磁盘IO、进程等关键系统信息,便于排查系统和进程状态。
- CPU信息: 核心数、负载、使用率、频率
- 内存信息: 总内存、已用、可用、缓存、交换分区
- 网络信息: 接口状态、流量统计、连接数
- 磁盘IO: 磁盘使用率、读写统计
- 进程信息: TOP 10 CPU/内存占用进程(按CPU使用率、内存占比、物理内存排序)
# 克隆项目
git clone https://github.com/ushell/topwho.git
cd topwho/src
# 添加执行权限
chmod +x topwho.sh# 单次执行,输出到终端
./topwho.sh
# 单次执行,保存到文件
./topwho.sh -o /tmp/diag.txt
# 持续监控,每5秒刷新(默认)
./topwho.sh -c
# 持续监控,自定义间隔
./topwho.sh -c -i 3
# 持续监控并保存到文件
./topwho.sh -c -i 5 -o /tmp/monitor.log注意: 如果从项目根目录运行,使用 ./src/topwho.sh
| 参数 | 说明 | 默认值 |
|---|---|---|
-c |
持续监控模式 | 单次执行 |
-i SECONDS |
监控间隔秒数 | 5 |
-o FILE |
输出文件路径 | 无 |
-h |
显示帮助信息 | - |
执行一次诊断,输出当前系统状态快照后退出。适合快速查看系统状态或生成报告。
持续监控系统状态,定期刷新输出。适合实时观察系统变化或排查性能问题。按 Ctrl+C 退出。
- Linux操作系统
- Bash Shell
- 基础命令:
free,df,ps - 可选:
iostat(安装sysstat包可获得更详细的磁盘IO统计)
# CentOS/RHEL
sudo yum install sysstat
# Ubuntu/Debian
sudo apt-get install sysstat╔══════════════════════════════════════════════════════════════════════════════╗
║ ║
║ ████████╗ ██████╗ █████╗ ██╗ ██╗██╗ ██╗ ██████╗ ║
║ ╚══██╔══╝██╔═══██╗██╔══██╗██║ ██║██║ ██║██╔═══██╗ ║
║ ██║ ██║ ██║██████╔╝██║ █╗ ██║███████║██║ ██║ ║
║ ██║ ██║ ██║██╔═══╝ ██║███╗██║██╔══██║██║ ██║ ║
║ ██║ ╚██████╔╝██║ ╚███╔███╔╝██║ ██║╚██████╔╝ ║
║ ╚═╝ ╚═════╝ ╚═╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═════╝ ║
║ ║
║ Linux系统诊断工具 v1.0.0 ║
║ 系统资源监控与进程分析 ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
[CPU信息]
───────────────────────────────────────────────────────────────────────────────
CPU核心数: 4
CPU负载(1/5/15分钟): 0.45 0.52 0.48
CPU使用率: 15%
CPU频率: 2.40 GHz
[内存信息]
───────────────────────────────────────────────────────────────────────────────
total used free shared buff/cache available
Mem: 7.8G 2.1G 4.2G 128M 1.5G 5.3G
Swap: 2.0G 0B 2.0G
[网络信息]
───────────────────────────────────────────────────────────────────────────────
网络接口流量统计:
eth0: RX=1.2 GB TX=987 MB
lo: RX=123 KB TX=123 KB
TCP连接数:
已建立: 45
监听: 12
[磁盘IO信息]
───────────────────────────────────────────────────────────────────────────────
磁盘使用情况:
/dev/sda1: 50G/200G (25%已用) 挂载点: /
[进程信息]
───────────────────────────────────────────────────────────────────────────────
TOP 10 CPU占用进程 (按CPU使用率排序):
PID USER COMMAND %CPU RSS (KB/MB)
1234 root /usr/bin/app 15.20% 10240 KB (10.00 MB)
...
- 持续监控模式会占用终端,建议在
screen或tmux中运行 - 文件输出模式会追加内容,如需覆盖请先删除旧文件
- 某些信息可能需要root权限才能获取完整数据
MIT License
欢迎提交 Issue 和 Pull Request!