显示行号
|
选择喜欢的代码风格
默认
GitHub
Dune
LakeSide
Plateau
Vibrant
Blue
Eighties
Tranquil
atop 命令监控 Linux 系统资源与进程的工具,非内部命令,需要安装。
atop 命令安装:
-bash: atop: command not found
#Debian
apt-get install atop
#Ubuntu
apt-get install atop
#Alpine
apk add atop
#Arch Linux
pacman -S atop
#Kali Linux
apt-get install atop
#Fedora
dnf install atop
#Raspbian
apt-get install atop
#Docker
docker run cmd.cat/atop atop
atop 命令补充说明:
它以一定的频率记录系统的运行状态,所采集的数据包含系统资源(CPU、内存、磁盘和网络)使用情况和进程运行情况,并能以日志文件的方式保存在磁盘中,服务器出现问题后,我们可获取相应的atop日志文件进行分析。atop是一款开源软件,我们可以从这里获得其源码和rpm安装包。
atop 命令语法:
atop(选项)(参数)
atop 命令选项:
#atop 进程视图:
g —— 默认输出
m —— 内存相关输出
d —— 磁盘相关输出
n —— 网络相关输出
c —— 命令行输出
u 查看对应的用户资源使用情况
p 显示所有每个进程的所有信息占用情况(disk、mem、io)
P(大写) 正则匹配,显示所有匹配到的进程
退出atop:q
atop 命令运行效果
ATOP - Dev_Test 2018/12/18 15:59:32 --------- 138d2h18m47s elapsed
PRC | sys 42d19h | user 143h00m | #proc 340 | #zombie 0 | #exit 0 |
CPU | sys 33% | user 13% | irq 0% | idle 737% | wait 15% |
cpu | sys 10% | user 0% | irq 0% | idle 89% | cpu003 w 0% |
cpu | sys 2% | user 3% | irq 0% | idle 84% | cpu000 w 10% |
cpu | sys 3% | user 2% | irq 0% | idle 93% | cpu001 w 1% |
cpu | sys 5% | user 1% | irq 0% | idle 93% | cpu002 w 1% |
cpu | sys 4% | user 1% | irq 0% | idle 95% | cpu007 w 0% |
cpu | sys 4% | user 1% | irq 0% | idle 95% | cpu006 w 0% |
cpu | sys 2% | user 2% | irq 0% | idle 93% | cpu004 w 2% |
cpu | sys 3% | user 1% | irq 0% | idle 95% | cpu005 w 0% |
CPL | avg1 0.58 | avg5 0.73 | avg15 0.72 | csw 482214e5 | intr 18905e6 |
MEM | tot 15.5G | free 731.8M | cache 2.0G | buff 37.9M | slab 196.2M |
SWP | tot 8.0G | free 4.1G | | vmcom 16.3G | vmlim 15.7G |
PAG | scan 16655e6 | steal 1211e7 | stall 2524e3 | swin 27736e3 | swout 2464e4 |
DSK | sda | busy 12% | read 23631e4 | write 1739e5 | avio 3.54 ms |
NET | transport | tcpi 17705e6 | tcpo 15930e6 | udpi 1932377 | udpo 3568950 |
NET | network | ipi 177079e5 | ipo 159353e5 | ipfrw 0 | deliv 1771e7 |
NET | eth0 7% | pcki 36801e5 | pcko 77944e5 | si 177 Kbps | so 7043 Kbps |
NET | vnet0 0% | pcki 3709287 | pcko 6439543 | si 0 Kbps | so 0 Kbps |
NET | br0 ---- | pcki 36786e5 | pcko 66666e5 | si 132 Kbps | so 6982 Kbps |
NET | lo ---- | pcki 14041e6 | pcko 14041e6 | si 1224 Kbps | so 1224 Kbps |
*** system and process activity since boot ***
PID SYSCPU USRCPU VGROW RGROW RDDSK WRDSK ST EXC S CPUNR CPU CMD 1/9
126 990h07m 0.00s 0K 0K 0K 0K N- - S 2 30% ksmd
15338 347m43s 80h24m 10.8G 6.9G 4.6T 345.1G N- - S 0 3% mysqld
16879 529m17s 52h12m 3.6G 2260K 196.3G 76.8G N- - S 6 2% qemu-kvm
2871 724m50s 455m02s 4.0G 2.9G 4.3G 46.3T N- - S 6 1% redis-server
722 114m15s 0.00s 0K 0K 0K 15.9T N- - S 0 0% jbd2/sda2-8
125 113m06s 0.00s 0K 0K 0K 2.1T N- - S 5 0% kswapd0
4871 35m39s 41m40s 742.2M 128.7M 571.6M 173.4G N- - S 6 0% redis-server
2911 38m32s 27m52s 162.2M 25536K 17820K 16K N- - S 5 0% redis-server
2901 38m48s 27m34s 138.2M 4100K 2596K 2340K N- - S 6 0% redis-server
3008 38m18s 27m58s 134.2M 2996K 788K 12K N- - S 3 0% redis-server
997 64m04s 0.00s 0K 0K 435.9M 1.6T N- - S 0 0% flush-8:0
28446 37m54s 3m13s 16084K 1256K 0K 0K N- - S 1 0% zabbix_agentd
82 32m53s 0.00s 0K 0K 0K 0K N- - S 0 0% kblockd/0
36 20m08s 0.00s 0K 0K 0K 0K N- - S 1 0% events/1
35 16m35s 0.00s 0K 0K 0K 0K N- - S 0 0% events/0
39 10m14s 0.00s 0K 0K 0K 0K N- - S 4 0% events/4
2713 5m03s 2m24s 106.0M 1104K 5.4G 24K N- - S 0 0% ksmtuned
40 6m11s 0.00s 0K 0K 0K 0K N- - S 5 0% events/5
1910 1m45s 4m20s 221.8M 1072K 8K 4K N- - S 6 0% php-fpm
37 5m57s 0.00s 0K 0K 0K 0K N- - S 2 0% events/2
42 5m44s 0.00s 0K 0K 0K 0K N- - S 7 0% events/7
41 5m25s 0.00s 0K 0K 0K 0K N- - S 6 0% events/6
2917 83.81s 3m26s 352.3M 28260K 1520K 0K N- - S 5 0% memcached
38 4m21s 0.00s 0K 0K 0K 0K N- - S 3 0% events/3
28450 1m54s 91.87s 16096K 872K 1.2G 8008K N- - S 0 0% zabbix_agentd
1656 1m57s 43.73s 93156K 704K 37920K 4.1G N- - S 3 0% auditd
2735 2m11s 16.52s 114.2M 1020K 12.8T 4.7T N- - S 0 0% crond
28447 88.15s 30.48s 16084K 976K 4.5G 8K N- - S 0 0% zabbix_agentd
28449 87.57s 30.60s 16084K 972K 4.7G 16K N- - S 0 0% zabbix_agentd
28448 86.63s 30.23s 16084K 1004K 4.5G 16K N- - S 0 0% zabbix_agentd
6287 6.76s 1m49s 286.6M 9092K 124K 0K N- - S 4 0% php7
22093 46.71s 62.16s 208.2M 21520K 39388K 380K N- - S 0 0% php-fpm
22079 45.72s 62.51s 208.4M 22592K 44364K 10648K N- - S 2 0% php-fpm
22083 44.79s 59.30s 208.1M 21528K 42528K 444K N- - S 0 0% php-fpm
22098 44.42s 57.63s 208.2M 22600K 41828K 7200K N- - S 0 0% php-fpm
22090 42.89s 56.97s 208.2M 20752K 48004K 392K N- - S 0 0% php-fpm
22087 44.15s 54.94s 208.1M 22808K 46068K 19560K N- - S 1 0% php-fpm
22096 43.09s 52.90s 208.2M 21952K 32864K 576K N- - S 0 0% php-fpm
26832 40.60s 55.15s 208.2M 22376K 30436K 396K N- - S 0 0% php-fpm
22086 42.86s 52.70s 208.2M 21200K 33388K 392K N- - S 0 0% php-fpm
3 93.17s 0.00s 0K 0K 0K 0K N- - S 0 0% migration/0
22091 38.75s 53.28s 208.2M 21860K 37836K 432K N- - S 0 0% php-fpm
ATOP列:该列显示了主机名、信息采样日期和时间点
PRC列:该列显示进程整体运行情况
sys、usr字段分别指示进程在内核态和用户态的运行时间
#proc字段指示进程总数
#zombie字段指示僵死进程的数量
#exit字段指示atop采样周期期间退出的进程数量
CPU列:该列显示CPU整体(即多核CPU作为一个整体CPU资源)的使用情况,我们知道CPU可被用于执行进程、处理中断,也可处于空闲状态(空闲状态分两种,一种是活动进程等待磁盘IO导致CPU空闲,另一种是完全空闲)
sys、usr字段指示CPU被用于处理进程时,进程在内核态、用户态所占CPU的时间比例
irq字段指示CPU被用于处理中断的时间比例
idle字段指示CPU处在完全空闲状态的时间比例
wait字段指示CPU处在“进程等待磁盘IO导致CPU空闲”状态的时间比例
CPU列各个字段指示值相加结果为N00%,其中N为cpu核数。
cpu列:该列显示某一核cpu的使用情况,各字段含义可参照CPU列,各字段值相加结果为100%
CPL列:该列显示CPU负载情况
avg1、avg5和avg15字段:过去1分钟、5分钟和15分钟内运行队列中的平均进程数量
csw字段指示上下文交换次数
intr字段指示中断发生次数
MEM列:该列指示内存的使用情况
tot字段指示物理内存总量
free字段指示空闲内存的大小
cache字段指示用于页缓存的内存大小
buff字段指示用于文件缓存的内存大小
slab字段指示系统内核占用的内存大小
SWP列:该列指示交换空间的使用情况
tot字段指示交换区总量
free字段指示空闲交换空间大小
PAG列:该列指示虚拟内存分页情况
swin、swout字段:换入和换出内存页数
DSK列:该列指示磁盘使用情况,每一个磁盘设备对应一列,如果有sdb设备,那么增多一列DSK信息
sda字段:磁盘设备标识
busy字段:磁盘忙时比例
read、write字段:读、写请求数量
NET列:多列NET展示了网络状况,包括传输层(TCP和UDP)、IP层以及各活动的网口信息
XXXi 字段指示各层或活动网口收包数目
XXXo 字段指示各层或活动网口发包数目
atop 日志:
每个时间点采样页面组合起来就形成了一个atop日志文件,我们可以使用"atop -r XXX"命令对日志文件进行查看。那以什么形式保存atop日志文件呢?
对于atop日志文件的保存方式,我们可以这样:
每天保存一个atop日志文件,该日志文件记录当天信息
日志文件以"atop_YYYYMMDD"的方式命名
设定日志失效期限,自动删除一段时间前的日志文件
其实atop开发者已经提供了以上日志保存方式,相应的atop.daily脚本可以在源码目录下找到。在atop.daily脚本中,我们可以通过修改INTERVAL变量改变atop信息采样周期(默认为10分钟);通过修改以下命令中的数值改变日志保存天数(默认为28天):
(sleep 3; find $LOGPATH -name 'atop_*' -mtime +28 -exec rm {} \; )&
最后,我们修改cron文件,每天凌晨执行atop.daily脚本:
0 0 * * * root /etc/cron.daily/atop.daily
atop 命令扩展阅读:
atop 命令评论