生产环境中atop命令使用总结
目录
1. 安装方式
2. 修改配置文件
3. 设置开机自启
4. 使用指南
4.1 实时监控(类似 top)
4.2 查看历史记录
4.3 常用快捷键
4.4 常用命令行参数
5. 界面解读
5.1 上半部分:系统级资源概览 (System Level Statistics)
5.2 下半部分:进程/线程级资源详情 (Process Level Statistics)
6. 应用场景
6.1 实时诊断性能瓶颈
6.2 故障回溯
6.3 监控特定资源
6.4 识别资源消耗大户
6.5 安全审计 (辅助)
7. 浏览器访问 Web 界面
1. 安装方式
sudo yum install -y atop # CentOS/RHEL
sudo dnf install -y atop # RHEL/CentOS 8/Fedora
sudo apt install -y atop # Ubuntu/Debian
sudo zypper install -y atop # openSUSE
sudo pacman -S atop # Arch Linux
2. 修改配置文件
修改/etc/sysconfig/atop 或
/usr/share/atop/atop.daily(CentOS)或/etc/default/atop
(Ubuntu)
设置监控周期(如60秒)、日志保留时间(如15天)及存储路径
LOGINTERVAL=60 #采样间隔
LOGGENERATIONS=15 #保留最近15天日志
LOGPATH=/var/log/atop #日志路径,若自定义OGPATH指定日志存储目录(需提前创建目录并设置权限)
3. 设置开机自启
sudo systemctl enable atop --now
4. 使用指南
4.1 实时监控(类似 top
)
4.2 查看历史记录
atop -r [日志文件路径]
4.3 常用快捷键
这些是 atop
最强大的功能之一,可以动态改变显示内容和排序:
-
g
: 切换回概览模式 (默认视图)。 -
m
: 按内存使用 (%MEM
) 降序排序进程。 -
d
: 按磁盘活动 (DSK
) 降序排序进程(显示每个进程的读写速率)。排查 I/O 瓶颈利器! -
n
: 按网络活动 (NET
) 降序排序进程(显示每个进程的网络流量)。排查网络流量利器! -
c
: 按 CPU 使用 (%CPU
) 降序排序进程 (默认)。 -
a
: 按最活跃资源自动排序进程 (atop 会根据系统瓶颈自动选择排序方式,如高 CPU 时按 CPU 排,高 I/O 时按 I/O 排)。 -
t
: 在进程/线程视图之间切换 (需要启动时加-y
才有效)。 -
u
/U
: 只显示属于特定用户的进程。按u
后输入用户名。 -
f
: 添加/移除显示字段。非常灵活,可以定制显示哪些进程级指标(如 PPID, 启动时间, 优先级等)。按f
后根据提示选择字段。 -
l
: 限制显示资源消耗超过阈值的进程。按l
后输入 CPU 或 MEM 的百分比阈值。 -
h
: 显示帮助信息,列出所有可用快捷键。 -
q
: 退出 atop。 -
k
: 杀死选中的进程 (会提示输入信号,默认 SIGTERM=15)。 -
i
: 改变刷新间隔 (秒)。默认是采样间隔(安装时配置,通常 10 秒)。 -
+
/-
: 在查看历史日志 (atop -r
) 时,向后/向前跳转一个采样点。 -
b
: 在查看历史日志时,跳转到指定时间点。按b
后输入时间 (格式 YYYYMMDD hh:mm)。 -
R
: 反向当前排序顺序。
4.4 常用命令行参数
-
atop -r [file]
: 回放指定的历史日志文件。 -
atop -b YYYYMMDD hh:mm
: 回放历史日志,并直接跳转到指定时间点。 -
atop -y
: 在线程级别显示信息 (需要内核支持)。 -
atop -1
: 只显示一次采样结果(类似vmstat 1 1
)然后退出。结合-b
或-r
可用于脚本分析历史。 -
atop -w [file]
: 将实时监控数据写入指定的原始数据文件 (.atop
格式,只能用atop -r
读取)。 -
atop -P [资源码]
: 启动时只显示特定的资源视图 (e.g.,atop -P CPU
只显示 CPU 相关视图,atop -P MEM
只显示内存,atop -P ALL
显示全部)。资源码可以是:-
CPU
,CPL
(负载),MEM
,SWP
,PAG
,DSK
,NET
,PRG
(进程),PRM
(进程内存),PRD
(进程磁盘),PRN
(进程网络),ALL
(全部)
-
-
atop -a
: 启动时按最活跃资源 (a
) 排序进程。 -
atop -d
: 启动时按磁盘活动 (d
) 排序进程。 -
atop -m
: 启动时按内存 (m
) 排序进程。 -
atop -c
: 显示完整的命令行 (而不是截断的)。 -
atop -u [user]
: 只显示指定用户的进程。
5. 界面解读
运行 atop
后,屏幕分为两部分
-
5.1 上半部分:系统级资源概览 (System Level Statistics)
-
PRC (Process Summary): 进程/线程总数、运行中、睡眠中、僵尸进程数量。
-
CPU (Processor Utilization):
-
sys
: 内核空间占用 %。 -
user
: 用户空间占用 %。 -
irq
: 硬件中断占用 %。 -
idle
: 空闲 %。 -
wait
: I/O 等待 % (重要!高值通常表示磁盘瓶颈)。 -
steal
: (虚拟化环境) 被 Hypervisor 偷走的 CPU %。 -
guest
: (虚拟化环境) 运行客户机占用的 CPU %。 -
curscal
: 当前 CPU 频率缩放比例 (相对于基础频率)。 -
通常按 All (所有核心总和) 和 各逻辑核心 分别显示。
-
-
CPL (CPU Load): 1 分钟、5 分钟、15 分钟的平均负载 (
avg1
,avg5
,avg15
)。 -
MEM (Memory Utilization):
-
tot
: 物理内存总量。 -
free
: 完全空闲内存。 -
cache
: 页缓存 (可回收)。 -
buff
: 缓冲区内存。 -
slab
: 内核 Slab 缓存。 -
dirty
: 脏页(等待写回磁盘)。 -
active
: 活跃内存。 -
inact
: 非活跃内存。 -
vmcom
: 所有进程申请的总虚拟内存 (VSZ)。 -
vmlim
: 虚拟内存上限。 -
vmuse
: 实际使用的虚拟内存 (RSS 总和,但注意 RSS 有共享页重复计算问题)。 -
swap
: Swap 总量、已用、空闲。
-
-
SWP (Swap Activity): 换入 (
si
)/换出 (so
) 的页面数 (KB/s)。 -
PAG (Paging Activity): 页换入 (
pi
)/页换出 (po
) 的页面数 (KB/s),以及扫描 (scan
) 的页面数 (高值可能表示内存压力)。 -
DSK (Disk Utilization): 按物理磁盘 (
sda
,sdb
等) 或逻辑卷显示:-
busy
: 磁盘忙碌时间百分比。 -
read
/write
: 读/写请求数 (次/秒)。 -
KiB/r
/KiB/w
: 平均每次读/写的数据量 (KiB)。 -
MBr/s
/MBw/s
: 读/写吞吐量 (MB/s)。 -
avq
: 平均队列长度。 -
avio
: 平均 I/O 服务时间 (毫秒)。
-
-
NET (Network Utilization): 按网络接口 (
eth0
,wlan0
等) 和协议层 (TCP, UDP) 显示:-
sp
: 接口速度 (Mbps)。 -
pcki
/pcko
: 收/发包数 (个/秒)。 -
sp
/si
: 收/发包速度 (KB/s)。 -
coll
: 冲突数 (有线网络)。 -
err
/drp
: 错误/丢包数。 -
tcpi
/tcpo
/udpi
/udpo
: TCP/UDP 收/发包数。 -
tcpao
/tcpie
/...: TCP 活动打开/被动打开/连接失败等状态计数。
-
-
-
5.2 下半部分:进程/线程级资源详情 (Process Level Statistics)
-
默认按 CPU 使用率 (
%CPU
) 降序排序。显示每个进程/线程的关键信息:-
PID
: 进程 ID。 -
TID
: 线程 ID (如果使用-y
选项)。 -
SYSCPU
: 进程在内核态消耗的 CPU 时间。 -
USRCPU
: 进程在用户态消耗的 CPU 时间。 -
VGROW
: 虚拟内存增长量 (VSZ 变化)。 -
RGROW
: 常驻内存增长量 (RSS 变化)。 -
RUID
: 进程的实际用户 ID。 -
EUID
: 进程的有效用户 ID。 -
ST
: 进程状态 (R=运行, S=睡眠, D=不可中断睡眠, Z=僵尸, T=停止)。 -
EXC
: 进程退出状态码 (如果已退出)。 -
THR
: 进程包含的线程数。 -
S
: 进程状态 (同ST
)。 -
%CPU
: CPU 使用率百分比 (所有核心总和)。 -
%MEM
: 内存使用率百分比 (RSS 占物理内存的比例)。 -
CPU
: 进程最后运行所在的 CPU 核心编号。 -
CMD
: 命令名 (启动进程的命令行)。
-
-
6. 应用场景
-
6.1 实时诊断性能瓶颈
-
发现
CPU
的wait
高 -> 按d
看哪个进程/磁盘 I/O 高。 -
发现
PAG
的scan
高或SWP
的si/so
高 -> 按m
看哪个进程占用内存多。 -
发现网络
err/drp
高 -> 按n
看哪个进程流量大或检查物理接口状态。 -
发现某个进程持续高 CPU -> 按
c
确认,可能需要进一步分析 (strace, perf)。 -
发现僵尸进程 (
PRC
的zombie
> 0) -> 在进程列表 (ST=Z
) 中查看。
-
-
6.2 故障回溯
-
系统昨晚突然变慢 -> 用
atop -r /var/log/atop/atop_20240809
回放昨天的日志。 -
定位到大概时间 -> 用
b
跳转到具体时间点 (e.g.,b 20240809 02:30
)。 -
用
g
,m
,d
,n
等键查看当时的系统资源瓶颈和罪魁祸首进程。
-
-
6.3 监控特定资源
-
atop -P DSK
:专注监控磁盘 I/O。 -
atop -P NET
:专注监控网络。 -
atop -P PRM, PRD
:专注看进程的内存和磁盘使用。
-
-
6.4 识别资源消耗大户
-
定期运行
atop -a
让 atop 自动高亮最耗资源的进程。 -
用
l
过滤掉消耗小的进程。
-
-
6.5 安全审计
-
检查异常时间段 (
b
) 的进程 (u
,f
查看 UID/EUID/CMD)。 -
检查异常网络连接 (
n
, 结合netstat
/ss
更佳)。
-
7. 浏览器访问 Web 界面
若需远程查看,可结合 gotop
工具搭建 Web 前端:
go get github.com/bsmack/gotop
GOTOP_OPTS="--server --port 8080" ./gotop --source=/var/log/atop/atop.log