top命令
查看系统资源利用情况
top - 10:41:35 up 1 min, 2 users, load average: 0.52, 0.58, 0.59
Tasks: 387 total, 1 running, 386 sleeping, 0 stopped, 0 zombie
%Cpu(s): 4.7 us, 1.2 sy, 0.0 ni, 93.9 id, 0.0 wa, 0.1 hi, 0.0 si, 0.0 st
MiB Mem : 16322.8 total, 9257.5 free, 6841.3 used, 224.0 buff/cache
MiB Swap: 49152.0 total, 49050.1 free, 101.9 used. 9350.9 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4 aoye 20 0 14972 2200 2108 S 0.0 0.0 0:00.12 bash
7 aoye 20 0 16924 1964 1396 R 0.0 0.0 0:00.03 top
1 root 20 0 8304 132 104 S 0.0 0.0 0:00.20 init
3 root 20 0 8304 92 56 S 0.0 0.0 0:00.00 init
说明
第一行【top】:系统
- “10:41:35”为系统当前时刻。
- “up 13days,20:23”为系统启动后到现在的运作时间。
- “2 users”为当前登录到系统的用户,更确切的说是登录到用户的终端数,同一个用户同一时间对系统多个终端的连接将被视为多个用户连接到系统,这里的用户数也将表现为终端的数目。
- “load average”为当前系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数。
第二行【Tasks】:进程
- “387 total”为当前系统进程总数。
- “1 running”为当前运行中的进程数。
- “386 sleeping”为当前处于等待状态中的进程数。
- “0 stoped”为被停止的系统进程数。
- “0 zombie”为被复原的进程数,僵尸进程。
第三行【Cpus】:分别表示了 CPU 当前的使用率。
- 5.9% us - 用户空间占用CPU的百分比。
- 3.4% sy - 内核空间占用CPU的百分比。
- 0.0% ni - 改变过优先级的进程占用CPU的百分比
- 90.4% id - 空闲CPU百分比
- 0.0% wa - IO等待占用CPU的百分比
- 0.0% hi - 硬中断(Hardware IRQ)占用CPU的百分比
- 0.2% si - 软中断(Software Interrupts)占用CPU的百分比
- 0.0% st - ??
注意:在这里CPU的使用比率和windows概念不同,需要理解linux系统用户空间和内核空间的相关知识。
第四行【Mem】:分别表示了内存总量、当前使用量、空闲内存量、以及缓冲使用中的内存量。
- 32949016k total - 物理内存总量(32GB)
- 14411180k used - 使用中的内存总量(14GB)
- 18537836k free - 空闲内存总量(18GB)
- 169884k buffers - 缓存的内存量 (169M)
第五行【Swap】:表示类别同第四行(Mem),但此处反映着交换分区(Swap)的使用情况。
通常,交换分区(Swap)被频繁使用的情况,将被视作物理内存不足而造成的。
- 32764556k total - 交换区总量(32GB)
- 0k used - 使用的交换区总量(0K)
- 32764556k free - 空闲交换区总量(32GB)
- 3612636k cached - 缓冲的交换区总量(3.6GB)
注意:第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。如果出于习惯去计算可用内存数,这里有个近似的计算公式:第四行的free + 第四行的 buffers + 第五行 的 cached , 按这个公式此台服务器的可用内存:18537836k+169884k+3612636k = 22GB左右。 对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。
第六行【中间空白】:中间部分的内部命令提示栏top 运行中可以通过 top 的内部命令对进程的显示方式进行控制。内部命令如下表:
- s - 改变画面更新频率
- l - 关闭或开启第一行 top 信息的表示
- t - 关闭或开启第二行 Tasks 和第三行 Cpus 信息的表示
- m - 关闭或开启第四行 Mem 和 第五行 Swap 信息的表示
- N - 以 PID 的大小的顺序排列表示进程列表
- P - 以 CPU 占用率大小的顺序排列进程列表
- M - 以内存占用率大小的顺序排列进程列表
- h - 显示帮助
- n - 设置在进程列表所显示进程的数量
- q - 退出 top
最下部分的进程列表栏
- PID - 进程id
- USER - 进程所有者
- PR - 进程优先级
- NI - nice值。负值表示高优先级,正值表示低优先级
- VIRT - 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
- RES - 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
- SHR - 共享内存大小,单位kb
- S - 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
- %CPU - 上次更新到现在的CPU时间占用百分比
- %MEM - 进程使用的物理内存百分比
- TIME+ - 进程使用的CPU时间总计,单位1/100秒
- COMMAND - 进程名称(命令名/命令行)
其他技巧
- 在top基本视图中,按键盘数字“1”,可监控每个逻辑CPU的状况。
- 敲击键盘“b”(打开/关闭加亮效果)高亮显示当前运行进程。
- 进程字段排序,默认是按照CPU使用量来排序的,按“x”可以高亮当前排序的列,shift + > 或者 < 可以切换排序的列。
- top -c 显示完整的命令
- top -b 以批处理的方式显示程序信息
- top -S 以累计的模式显示程序信息
- top -n 2 设置信息更新次数
- top -d 3 设置信息更新时间
- top -p 123 显示指定进程的信息
交互命令
在top 命令执行过程中可以使用的一些交互命令。这些命令都是单字母的,如果在命
令行中使用了s 选项, 其中一些命令可能会被屏蔽。
- h 显示帮助画面,给出一些简短的命令总结说明
- k 终止一个进程。
- i 忽略闲置和僵死进程。这是一个开关式命令。
- q 退出程序
- r 重新安排一个进程的优先级别
- S 切换到累计模式
- s 改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s
- f 或者F 从当前显示中添加或者删除项目
- o 或者O 改变显示项目的顺序
- l 切换显示平均负载和启动时间信息
- m 切换显示内存信息
- t 切换显示进程和CPU状态信息
- c 切换显示命令名称和完整命令行
- M 根据驻留内存大小进行排序
- P 根据CPU使用百分比大小进行排序
- T 根据时间/累计时间进行排序
- W 将当前设置写入~/.toprc文件中
About
- 企鹅号码:848408012
- 企鹅群号:465073050
- 私人邮箱:du.chao.qun@163.com
- 备注说明:欢迎联系交流,共同学习进步,转载请注明出处,谢谢。