top 功能说明:实时显示系统中各个进程的资源占用状况。
参数选项:
-a 将进程按照使用内存排序(CentOS7及以上没有此参数)。
-b 以批处理的模式显示进程信息,输出结果可以传递给其他程序或写入到文件中。
在这种模式下,top命令不会接受任何输入,一直运行直到到达-n选项设置的阀值,或者按Ctrl+C等组合键终止程序。
-c 显示进程的整个命令路径,而不是只显示命令名称。
-d 指定每两次屏幕信息刷新之间的时间。
-H 指定这个可以显示每个线程的情况,否则就是进程的总的状态。
-i 不显示闲置或者僵死的进程信息。
-n top输出信息更新的次数,完成后将退出top命令。
-p 显示指定的进程信息。
交互式命令:
h或? 显示帮助信息。
Z 全局颜色设置。
B 全局字体加粗设置。
l 切换是否显示平均负载和启动时间信息。
t 切换是否显示进程和CPU状态信息。
m 切换是否显示内存信息。
1 数字1,用于多核CPU监控,可监控每个逻辑CPU的状况。
I Irix/Solaris模式。
f 从当前显示列表中添加或删除项目。按"a~z"键即可显示或隐藏对应的列,最后按回车键确认。
o 改变top输出信息中显示项目的顺序。
按小写的"a-z"键可以将相应的列向右移动,而按大写的"A~Z"键可以将相应的列向左移动,最后按回车键确认。
F或O 选择排序的列。
<,> 移动选择排序的列,"<"选择左邻一列排序,">"选择右邻一列排序。
R 切换正常/反转排序。
H 切换是否显示线程信息。
c 切换是否显示完整命令行和命令名称信息。
i 切换是否显示闲置进程和僵死进程。
S 切换到累计模式。
x 以高亮的形式排序对应的列,需要结合b/z使用。
y 高亮运行的进程,需要结合b/z使用。
z 打开/关闭颜色。
b 打开/关闭加粗。
u 显示指定用户相关的进程信息。
n或# 设置显示进程的最大行数。
k 终止一个进程,系统将提示用户输入一个需要终止进程的PID。
r 重新设置一个进程的优先级,系统提示用户输入需要改变的进程PID,以及需要设置的进程优先级值。
输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。
d或s 改变top输出信息两次刷新之间的时间,系统将提示输入新的时间,单位是s。
如果是小数,则换算成ms;如果输入0,那么系统将会不断刷新,默认刷新时间是3s。
需要注意的是,如果设置太小的时间,则可能会引起系统不断刷新,无法看清输出显示情况,而且系统负载也会加大。
W 将当前top设置写入 "~/.toprc" 文件中。
q 退出top显示。
范例:显示进程信息
[root@testdb62 ~]# top
top - 14:24:07 up 69 days, 22:11, 2 users, load average: 0.01, 0.02, 0.05
Tasks: 120 total, 1 running, 119 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 1.6 sy, 0.0 ni, 98.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 8173976 total, 5385572 free, 413580 used, 2374824 buff/cache
KiB Swap: 8257532 total, 8257532 free, 0 used. 7396152 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 191128 3384 1896 S 0.0 0.0 24:29.88 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:02.68 kthreadd
4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
6 root 20 0 0 0 0 S 0.0 0.0 0:46.02 ksoftirqd/0
7 root rt 0 0 0 0 S 0.0 0.0 0:23.09 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 16:31.76 rcu_sched
10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain
说明:
第一行,任务队列信息,同uptime命令的执行结果。
14:24:07 当前系统时间。
up 69 days, 22:11 系统已经运行的时间是69天22小时11分。
2 users 当前有2个用户登录系统。
load average: 0.01, 0.02, 0.05 后面三个数分别是1分钟、5分钟、15分钟的平均负载情况
第二行,Tasks为任务(进程),从上面的信息可以看出,系统现在共有120个进程,
其中处于运行状态的有1个,119个在休眠(sleep),stoped状态0个,zombie状态(僵死)的有0个。
第三行,CPU状态信息
0.0 us 用户空间占用CPU的百分比。
1.6 sy 内核空间占用CPU的百分比。
0.0 ni 改变过优先级的进程占用CPU的百分比。
98.4 id 空闲CPU的百分比。
0.0 wa I/O等待占用CPU的百分比。
0.0 hi 硬中断(Hardware IRQ)占用CPU的百分比。
0.0 si 软中断(Software Interrupts)占用CPU的百分比。
0.0 st 虚拟机占用CPU的百分比。
第四行,内存状态
8173976 total 物理内存总量。
5385572 free 空闲内存总量。
413580 used 使用中的内存总量。
2374824 buff/cache 缓冲的内存量。
第五行,swap交换分区信息
8257532 total 交换区总量。
8257532 free 空闲交换区总量。
0 used 使用的交换区总量。
7396152 avail Mem 可用的内存量。
计算真正可用的内存数为:free + buff/cache
对内存进行监控是,要关注wap交换分区的used,如果这个数值还在不断地变化,
则说明内核正在不断进行内存和swap的数据交换,这表示内存真的不够用了或者程序运行有内存溢出问题。
第七行,各进程(任务)的状态监控。
PID 进程ID
USER 进程所有者。
PR 进程优先级。
NI nice值,负值表示高优先级,正值表示低优先级。
VIRT 进程使用的虚拟内存总量,单位为kb。
RES 进程使用、未被换出的物理内存大小,单位为kb。
SHR 共享内存大小,单位为kb。
S 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程。
%CPU 上次更新到现在CPU时间占用百分比。
%MEM 进程使用的物理内存百分比。
TIME+ 进程使用CPU时间总计,单位1/100秒。
COMMAND 进程名称(命令名/命令行)。
范例:显示多核不同核CPU的信息
在top基本视图中,按数字1,可监控每个逻辑CPU的状况,再按数字1,返回到基本视图界面。
[root@testdb62 ~]# top
top - 15:41:53 up 69 days, 23:29, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 121 total, 1 running, 120 sleeping, 0 stopped, 0 zombie
%Cpu0 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu1 : 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 8173976 total, 5384812 free, 414408 used, 2374756 buff/cache
KiB Swap: 8257532 total, 8257532 free, 0 used. 7395324 avail Mem
范例:将进程按照使用内存排序(CentOS7及以上没有此参数)
[root@testdb62 ~]# top -a
top - 15:55:54 up 74 days, 22:31, 1 user, load average: 0.06, 0.10, 0.08
Tasks: 214 total, 1 running, 213 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.1%us, 0.2%sy, 0.0%ni, 99.6%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 10362812k total, 7115712k used, 3247100k free, 146320k buffers
Swap: 20922316k total, 29836k used, 20892480k free, 6059892k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1898 mysql 20 0 4868m 377m 5876 S 0.7 3.7 11332:19 mysqld
2542 root 20 0 387m 79m 548 S 0.3 0.8 158:49.11 memcached
2022 root 20 0 697m 22m 3652 S 0.0 0.2 96:19.19 frpc
13730 zabbix 20 0 219m 5660 1092 S 0.0 0.1 119:12.13 zabbix_proxy
1151 root 20 0 249m 5072 916 S 0.0 0.0 3:01.19 rsyslogd
15232 postfix 20 0 81252 4124 3000 S 0.0 0.0 0:00.01 local
15230 postfix 20 0 81096 3536 2632 S 0.0 0.0 0:00.01 cleanup
15233 postfix 20 0 80988 3464 2572 S 0.0 0.0 0:00.00 bounce
6062 postfix 20 0 80952 3420 2540 S 0.0 0.0 0:00.04 pickup