linux atop命令

atop命令 是一个功能强大的交互式系统监控工具,可以实时监控系统资源使用情况和进程活动。与top命令相比,atop提供更详细的信息、历史数据记录和回放功能,是系统性能分析和故障排查的专业工具。

命令格式

# 实时监控模式
atop [选项] [间隔时间] [次数]

# 查看历史数据
atop -r [日志文件] [开始时间] [结束时间]

# 生成报告
atop -w [输出文件] [间隔时间] [次数]

常用选项

选项 说明
-a 显示所有进程(包括非活动进程)
-c 按CPU使用率排序(默认)
-m 按内存使用率排序
-d 按磁盘使用率排序
-n 按网络使用率排序
-s 按系统资源排序
-v 显示进程详细信息
-r 文件 读取历史数据文件
-w 文件 将数据写入二进制文件
-l 显示滚动日志(跟随模式)
-P 资源 按指定资源筛选进程(cpu,mem,dsks,net)
-g 显示进程组信息
-A 显示所有信息(等价于-v)
-b 时间 从指定时间开始(格式:YYYYMMDDhhmm)
-e 时间 到指定时间结束(格式:YYYYMMDDhhmm)
interval 采样间隔(秒)
count 采样次数

输出界面说明

atop界面布局
  1. 顶部统计区:系统整体资源使用情况
  2. 进程列表区:按资源使用排序的进程列表
  3. 颜色标识红色 - 资源使用过高 黄色 - 资源使用警告 绿色 - 资源使用正常
  4. 快捷键h 帮助,q 退出,c CPU排序,m 内存排序

输出字段说明

顶部统计区字段

字段 说明
PRC 进程统计(总进程数、运行/睡眠进程数)
CPU CPU使用率(用户、系统、空闲、等待等)
CPL CPU负载(1、5、15分钟平均负载)
MEM 内存使用(总内存、已用、缓存、缓冲区等)
SWP 交换分区使用情况
PAG 页面交换活动
PSI 压力失速信息(CPU、内存、IO压力)
LVM/MDD/DSK 逻辑卷/磁盘/分区活动
NET 网络接口统计

进程列表区字段

字段 说明
PID 进程ID
SYSC 系统调用次数
USER 进程所有者
THR 线程数
S 进程状态(R运行,S睡眠,D不可中断睡眠)
CPU% CPU使用率
MEM% 内存使用率
VGROW 虚拟内存增长
RGROW 驻留内存增长
RDDSK 磁盘读取
WRDSK 磁盘写入
RUID 真实用户ID
EUID 有效用户ID
ST 进程启动时间
NAME/CMD 进程名/命令行

使用实例

1. 基本实时监控(类似top)
atop
2. 指定采样间隔和次数
# 每2秒采样一次,共采样10次
atop 2 10
3. 按内存使用排序
atop -m
4. 按磁盘活动排序
atop -d
5. 按网络活动排序
atop -n
6. 显示所有进程(包括不活动的)
atop -a
7. 显示详细信息
atop -v
8. 读取历史数据文件
# 读取默认位置的历史数据
atop -r /var/log/atop/atop_20230101

# 读取指定日期的数据
atop -r /var/log/atop/atop_$(date +%Y%m%d)

# 读取并跟随最新数据
atop -l -r /var/log/atop/atop_20230101
9. 将监控数据写入文件
# 将数据保存到二进制文件
atop -w /tmp/atop_data 2 30

# 压缩保存(节省空间)
atop -w /tmp/atop_data.gz 5 100
10. 查看特定时间段的历史数据
# 查看2023年1月1日10:30到11:00的数据
atop -r /var/log/atop/atop_20230101 -b 1030 -e 1100
11. 筛选特定资源类型的进程
# 只显示CPU消耗高的进程
atop -P cpu

# 只显示内存消耗高的进程
atop -P mem

# 只显示磁盘活动多的进程
atop -P dsks

# 只显示网络活动多的进程
atop -P net
12. 生成文本报告
# 生成一次性报告
atop 1 1 > /tmp/atop_report.txt

# 生成详细报告
atop -v 5 3 > /tmp/detailed_report.txt
13. 监控特定进程
# 使用过滤器监控nginx进程
atop | grep nginx

# 或者使用进程名筛选
atop -c | grep -A5 -B5 "nginx"

实际输出示例

示例1:基本输出
ATOP - hostname    2023/01/01  10:30:00        ------      10s elapsed
PRC | sys    0.38s | user   1.25s | #proc    256 | #zombie    0 | #exit      0 |
CPU | sys      12% | user     38% | irq       0% | idle     50% | wait      0% |
CPL | avg1    1.25 | avg5    1.10 | avg15    0.95 | csw    12345 | intr   5678 |
MEM | tot    16.0G | free    4.0G | cache    6.0G | buff    1.0G | slab    0.5G |
SWP | tot     2.0G | free    1.5G |              | vmcom   8.0G | vmlim  10.0G |
NET | transport    | tcpi     123 | tcpo     456 | udpi      78 | udpo      90 |
NET | network     | ipi      234 | ipo      567 | ipfrw      0 | deliv    234 |
DSK |          sda | busy      5% | read     123 | write    456 | avio 0.5ms |
示例2:进程列表
  PID   SYSC  USER     THR  S  CPU%  MEM%  VGROW  RGROW  RDDSK  WRDSK  RUID  EUID  ST  NAME/CMD
12345   1234  root      12  R  25.0   2.5   120K    80K    123    456   root  root  10:15  nginx
23456   2345  mysql      8  S  15.0  20.0   500K   300K     45     67   mysql mysql 09:30  mysqld
34567    890  www-data  20  S   5.0   3.0    50K    30K     12     23   www-  www-  10:00  php-fpm
示例3:磁盘统计详情
DSK |          sda | busy     15% | read    1024 | write   2048 | avio 1.2ms |
DSK |          sdb | busy      5% | read     512 | write   1024 | avio 0.8ms |
LVM |         vg00 | busy     20% | read    1536 | write   3072 | avio 1.5ms |

交互式快捷键

排序快捷键
  • c - 按CPU使用率排序
  • m - 按内存使用率排序
  • d - 按磁盘活动排序
  • n - 按网络活动排序
  • a - 按进程年龄排序
  • t - 按线程数排序
显示控制
  • g - 显示通用输出
  • v - 显示详细信息
  • u - 显示指定用户进程
  • p - 显示指定PID进程
  • f - 添加/删除显示字段
  • l - 限制显示行数
历史控制
  • t - 切换到下一个采样
  • T - 切换到上一个采样
  • b - 跳到指定时间
  • r - 反向播放模式
  • Space - 暂停/继续播放
其他功能
  • h - 显示帮助
  • q - 退出atop
  • 1 - 单CPU模式
  • 2 - 每CPU详细模式
  • Enter - 刷新显示

实用场景

性能分析
  • 系统瓶颈定位
  • 资源使用趋势分析
  • 进程性能调优
  • 容量规划支持
故障排查
  • 系统卡顿原因分析
  • 内存泄漏检测
  • CPU峰值问题调查
  • 磁盘IO瓶颈诊断
安全审计
  • 异常进程检测
  • 资源滥用监控
  • 用户活动审计
  • 入侵行为分析
合规报告
  • 系统使用报告
  • 资源利用率统计
  • 性能基准测试
  • SLA合规验证

实用命令组合

# 监控特定时间段的系统活动
atop -r /var/log/atop/atop_20230101 -b 0900 -e 1700

# 生成每日性能报告
atop -r /var/log/atop/atop_$(date +%Y%m%d) > /var/log/daily_report.txt

# 查找内存泄漏进程
atop -P mem | grep -E "MEM%|VGROW.*[0-9]+M"

# 监控磁盘IO最高的进程
atop -d -P dsks | head -20

# 分析CPU使用模式
atop -c -b 0900 -e 1800 -r /var/log/atop/atop_20230101 | grep -E "CPU%|^[0-9]+:"

# 自动化监控脚本
#!/bin/bash
LOG_DIR="/var/log/atop_reports"
DATE=$(date +%Y%m%d_%H%M%S)

# 采集5分钟的数据,每10秒一次
atop -w $LOG_DIR/report_$DATE.raw 10 30

# 转换为文本格式
atop -r $LOG_DIR/report_$DATE.raw > $LOG_DIR/report_$DATE.txt

echo "报告已生成: $LOG_DIR/report_$DATE.txt"

配置atop日志记录

# atop配置文件位置
/etc/default/atop    # Debian/Ubuntu
/etc/sysconfig/atop  # CentOS/RHEL

# 配置文件示例
INTERVAL=600          # 采样间隔(秒)
LOGPATH=/var/log/atop # 日志保存路径
LOGINTERVAL=86400     # 日志文件切换间隔(秒)
LOGDAYS=28            # 保留日志天数

# 启用atop服务
sudo systemctl enable atop
sudo systemctl start atop

# 检查服务状态
sudo systemctl status atop

# 手动触发日志轮转
sudo systemctl restart atop

# 查看当前配置
sudo atop -V
注意事项:
  • atop需要root权限才能收集完整的系统信息
  • 日志文件可能占用较多磁盘空间,建议合理配置日志保留策略
  • 在生产环境使用前,先测试性能影响
  • atop的数据收集可能影响高IO系统的性能
  • 历史数据文件需要定期清理,避免磁盘空间不足
  • 某些发行版可能需要额外安装内核模块支持完整功能
  • atop的CPU统计比top更准确,但可能略有差异

atop与top/htop对比

特性 atop top htop
历史数据记录 ✓ 支持,可回放 ✗ 不支持 ✗ 不支持
磁盘IO监控 ✓ 详细监控 ✗ 基本监控 △ 有限监控
网络监控 ✓ 详细监控 ✗ 不支持 ✗ 不支持
进程级磁盘IO ✓ 支持 ✗ 不支持 ✗ 不支持
压力失速信息 ✓ 支持 ✗ 不支持 ✗ 不支持
交互式界面 △ 功能丰富 △ 基本功能 ✓ 界面友好
学习曲线 △ 较陡 ✓ 简单 ✓ 简单
推荐用途 专业性能分析、故障调查 快速系统状态检查 交互式进程管理

安装atop

atop不是默认安装的,需要手动安装:

# Ubuntu/Debian
sudo apt-get install atop

# CentOS/RHEL/Fedora
sudo yum install atop

# Arch Linux
sudo pacman -S atop

# 从源码编译安装
wget http://www.atoptool.nl/download/atop-2.7.1.tar.gz
tar -xzf atop-2.7.1.tar.gz
cd atop-2.7.1
make
sudo make install

# 安装内核模块(可选,增强功能)
sudo modprobe netatop  # 网络监控增强
sudo modprobe pidmon   # 进程监控增强

# 验证安装
atop -V
或
which atop

实际案例:性能问题排查

场景:系统响应缓慢问题排查
#!/bin/bash
# 系统性能问题排查脚本

echo "=== 系统性能问题排查 ==="
echo "开始时间: $(date)"

# 1. 检查当前系统状态
echo -e "\n1. 当前系统状态:"
atop 1 1 | head -20

# 2. 检查历史数据
echo -e "\n2. 最近10分钟的历史数据:"
DATE=$(date +%Y%m%d)
START_TIME=$(date -d "10 minutes ago" +%H%M)
END_TIME=$(date +%H%M)

atop -r /var/log/atop/atop_$DATE -b $START_TIME -e $END_TIME 2>/dev/null || \
    echo "历史数据不可用,请检查atop服务"

# 3. 查找资源消耗最高的进程
echo -e "\n3. CPU消耗最高的5个进程:"
atop -c 1 1 | grep -A5 "PID"

echo -e "\n4. 内存消耗最高的5个进程:"
atop -m 1 1 | grep -A5 "PID"

echo -e "\n5. 磁盘IO最高的5个进程:"
atop -d 1 1 | grep -A5 "PID"

# 4. 检查系统瓶颈
echo -e "\n6. 系统瓶颈分析:"
echo -n "CPU负载: "; uptime | awk '{print $10,$11,$12}'
echo -n "内存使用: "; free -h | grep Mem | awk '{print $3"/"$2}'
echo -n "磁盘使用: "; df -h / | tail -1 | awk '{print $5}'

# 5. 建议
echo -e "\n7. 建议:"
echo "1) 查看完整的atop报告: atop -r /var/log/atop/atop_$(date +%Y%m%d)"
echo "2) 检查系统日志: journalctl -xe --since \"10 minutes ago\""
echo "3) 检查特定进程: atop -p [PID]"

echo -e "\n排查完成时间: $(date)"

相关工具

atop系列工具
  • atopsar - 生成系统活动报告
  • atopcat - 转换二进制日志为文本
  • atoprc - atop配置文件
  • atop.d - atop插件目录
配套脚本
  • atop-rotate - 日志轮转脚本
  • atop-convert - 格式转换脚本
  • atop-acct - 计费统计脚本
  • atop-graph - 图形化展示脚本

相关命令

top/htop

实时进程监控工具

查看详情
sar

系统活动报告器

查看详情
vmstat

虚拟内存统计

查看详情