top
命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。
执行:
top
top - 09:14:56 up 264 days, 20:56, 1 user, load average: 0.02, 0.04, 0.00 Tasks: 87 total, 1 running, 86 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.2%st Mem: 377672k total, 322332k used, 55340k free, 32592k buffers Swap: 397308k total, 67192k used, 330116k free, 71900k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 2856 656 388 S 0.0 0.2 0:49.40 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 7:15.20 ksoftirqd/0 4 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
-
- 第一行
-
09:14:56
: 系统当前时间264 days, 20:56
: 系统开机到现在经过了多少时间1 users
: 当前2用户在线load average
: 0.02, 0.04, 0.00: 系统1分钟、5分钟、15分钟的CPU负载信息
-
- 第二行
-
Tasks
:任务;87 total
:很好理解,就是当前有87个任务,也就是87个进程。1 running:
1个进程正在运行86 sleeping
:86个进程睡眠0 stopped
:停止的进程数0 zombie
:僵死的进程数
-
- 第三行
-
Cpu(s)
:表示这一行显示CPU总体信息0.0%us
:用户态进程占用CPU时间百分比,不包含renice值为负的任务占用的CPU的时间。0.7%sy
:内核占用CPU时间百分比0.0%ni
:改变过优先级的进程占用CPU的百分比99.3%id
:空闲CPU时间百分比0.0%wa
:等待I/O的CPU时间百分比0.0%hi
:CPU硬中断时间百分比0.0%si
:CPU软中断时间百分比- 注:这里显示数据是所有cpu的平均值,如果想看每一个cpu的处理情况,按1即可;折叠,再次按1;
-
- 第四行
-
Men
:内存的意思8175320kk total
:物理内存总量8058868k used
:使用的物理内存量116452k free
:空闲的物理内存量283084k buffers
:用作内核缓存的物理内存量
-
- 第五行
-
Swap:交换空间
6881272k total
:交换区总量4010444k used
:使用的交换区量2870828k free
:空闲的交换区量4336992k cached
:缓冲交换区总量
-
- 进程信息
-
- 再下面就是进程信息:
PID
:进程的IDUSER
:进程所有者PR
:进程的优先级别,越小越优先被执行NInice:
值VIRT
:进程占用的虚拟内存RES
:进程占用的物理内存SHR
:进程使用的共享内存S
:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数%CPU
:进程占用CPU的使用率%MEM
:进程使用的物理内存和总内存的百分比TIME+
:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。COMMAND
:进程启动命令名称
参数说明
- 命令行启动参数:
用法: top -hv | -bcisSHM -d delay -n iterations [-u user | -U user] -p pid [,pid ...]
-b
: 批次模式运行。通常用作来将top的输出的结果传送给其他程式或储存成文件-c
: 显示执行任务的命令行-d
: 设定延迟时间-h
: 帮助-H
: 显示线程。当这个设定开启时,将显示所有进程产生的线程-i
: 显示空闲的进程-n
: 执行次数。一般与-b搭配使用-u
: 监控指定用户相关进程-U
: 监控指定用户相关进程-p
: 监控指定的进程。当监控多个进程时,进程ID以逗号分隔。这个选项只能在命令行下使用-s
: 安全模式操作-S
: 累计时间模式-v
: 显示top版本,然后退出。-M
: 自动显示内存单位(k/M/G)
1.全局命令
回车、空格
: 刷新显示信息?、h
: 帮助=
: 移除所有任务显示的限制A
: 交替显示模式切换B
: 粗体显示切换d、s
: 更改界面刷新时间间隔G
: 选择其它窗口/栏位组I
: Irix或Solaris模式切换u、U
: 监控指定用户相关进程k
: 结束进程q
: 退出topr
: 重新设定进程的nice值W
: 存储当前设定Z
: 改变颜色模板
2.摘要区命令
l
: 平均负载及系统运行时间显示开关m
: 内存及交换空间使用率显示开关t
: 当前任务及CPU状态显示开关1
: 汇总显示CPU状态或分开显示每个CPU状态
1.任务区命令
- 外观样式
b
: 黑体/反色显示高亮的行/列。控制x和y交互命令的显示样式x
: 高亮显示排序的列y
: 高亮显示正在运行的任务z
: 彩色/黑白显示。- 显示内容
c
: 任务执行的命令行或进程名称f、o
: 增加和移除进程信息栏位及调整进程信息栏位显示顺序H
: 显示线程S
: 时间累计模式u
: 监控指定用户相关进程- 任务显示的数量
i
: 显示空闲的进程n或#
: 设置任务显示最大数量- 任务排序(shift+f)
M
: 按内存使用率排序N
: 按PID排序P
: 按CPU使用率排序T
: 按Time+排序<
: 按当前排序栏位左边相邻栏位排序- > :按当前排序栏位右边相邻栏位排序
F 或 O
: 选择排序栏位R
: 反向排序
注:强调一下,使用频率最高的是P
、T
、M
,因为通常使用top
,我们就想看看是哪些进程最耗cpu资源、占用的内存最多; 注:通过"shift + >
"或shift + <
"可以向右或左改变排序列 如果只需要查看内存:可用free
命令。只查看uptime
信息(第一行),可用uptime
命令;
实例
实例1:多核CPU监控
在top基本视图中,按键盘数字“1
”,可监控每个逻辑CPU的状况;
top - 09:10:44 up 20 days, 16:51, 4 users, load average: 3.82, 4.40, 4.40 Tasks: 1201 total, 10 running, 1189 sleeping, 0 stopped, 2 zombie Cpu0 : 1.3%us, 2.3%sy, 0.0%ni, 96.4%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu1 : 1.3%us, 2.6%sy, 0.0%ni, 96.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu2 : 1.0%us, 2.0%sy, 0.0%ni, 92.5%id, 0.0%wa, 0.0%hi, 4.6%si, 0.0%st Cpu3 : 3.9%us, 7.8%sy, 0.0%ni, 83.2%id, 0.0%wa, 0.0%hi, 5.2%si, 0.0%st Cpu4 : 4.2%us, 10.4%sy, 0.0%ni, 63.8%id, 0.0%wa, 0.0%hi, 21.5%si, 0.0%st Cpu5 : 6.8%us, 12.7%sy, 0.0%ni, 80.5%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu6 : 2.9%us, 7.2%sy, 0.0%ni, 85.3%id, 0.0%wa, 0.0%hi, 4.6%si, 0.0%st Cpu7 : 6.2%us, 13.0%sy, 0.0%ni, 75.3%id, 0.0%wa, 0.0%hi, 5.5%si, 0.0%st Mem: 32943888k total, 32834216k used, 109672k free, 642704k buffers Swap: 35651576k total, 5761928k used, 29889648k free, 16611500k cached
实例2:高亮显示当前运行进程
在top基本视图中,按键盘“b
”(打开/关闭加亮效果)
实例3:显示完整的程序命令
命令:
top -c
top - 09:14:35 up 20 days, 16:55, 4 users, load average: 5.77, 5.01, 4.64 Tasks: 1200 total, 5 running, 1192 sleeping, 0 stopped, 3 zombie Cpu(s): 4.4%us, 6.0%sy, 0.0%ni, 83.8%id, 0.2%wa, 0.0%hi, 5.5%si, 0.0%st Mem: 32943888k total, 32842896k used, 100992k free, 591484k buffers Swap: 35651576k total, 5761808k used, 29889768k free, 16918824k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2013 apache 18 0 403m 88m 5304 S 25.0 0.3 6:37.44 /usr/sbin/httpd 18335 pubtest 22 0 65576 996 728 R 7.8 0.0 0:00.24 netstat -naltp 16499 rdtfare 15 0 13672 2080 824 R 2.6 0.0 0:00.38 top -c 29684 rdtfare 15 0 1164m 837m 14m S 2.3 2.6 148:47.54 ./autodata data1.txt 12976 pubtest 18 0 238m 9000 1932 S 1.6 0.0 439:28.44 tscagent -s TOEV_P
实例4:显示指定的进程信息
命令:
top -p pidid
top - 09:17:34 up 455 days, 17:55, 2 users, load average: 3.76, 4.56, 4.46 Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie Cpu(s): 7.8%us, 1.9%sy, 0.0%ni, 89.2%id, 0.0%wa, 0.1%hi, 1.0%si, 0.0%st Mem: 8175452k total, 8103988k used, 71464k free, 268716k buffers Swap: 6881272k total, 4275424k used, 2605848k free, 6338184k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 17265 tdv1 15 0 56504 828 632 S 0.0 0.0 195:53.25 redis-server
指定进程信息有多个时,需要结合其它工具将回车替换为,(-p 支持pid,pid,pid语法)
实例5:导出top
状态
命令:
top -bn1
它表示非动态打印系统资源使用情况,可以用在shell脚本中