Linux top 命令 - 实时显示进程和系统状态
介绍
top 命令用于动态实时显示 Linux 进程的状态。
语法:
top -hv|-bcEHiOSs1 -d secs -n max -u|U user -p pid -o fld -w [cols]
选项:
-b:以批处理模式操作-c:显示完整的治命令-d:屏幕刷新间隔时间-I:忽略失效过程-s:保密模式-S:累积模式-i <secs>:设置间隔时间-u <user>:指定用户名-p <pid>:指定进程-n <max>:循环显示的次数
输出说明:
执行 top 命令后,会在终端输出系统进程状态信息,头部信息大致如下:
top - 18:34:11 up 9:14, 2 users, load average: 0.93, 0.87, 0.72
Tasks: 322 total, 1 running, 264 sleeping, 0 stopped, 0 zombie
%Cpu(s): 3.4 us, 1.1 sy, 0.0 ni, 95.3 id, 0.1 wa, 0.0 hi, 0.1 si, 0.0 st
KiB Mem : 8029784 total, 130760 free, 4012508 used, 3886516 buff/cache
KiB Swap: 7931900 total, 7923452 free, 8448 used. 3191432 avail Mem
对于服务器来说,重点关注:
load average:平均 负载,后面3个值分别为当前1分钟、5分钟、15分钟的平均负载,最大值等于 CPU 核心数。KiB Mem:该行数据显示内存总大小、空闲内存、已使用内存,以及用于缓存的内存大小。KiB Swap:该行数据显示交换分区的情况。
接着输出一个进程列表,表头栏目如下:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
每列的含义如下:
PID:进程 IDUSER:进程所有者PR:进程优先级NI:nice 值(负值表示高优先级,正值表示低优先级)VIRT:进程使用的虚拟内存总量(同 VSZ),单位 kb。VIRT = SWAP + RESRES:进程使用的、未被换出的物 理内存大小(同 RSS),单位 kb。RES = CODE + DATASHR:共享内存大小,单位 kbS:进程状态。D = 不可终端的睡眠状态,R = 运行,S = 睡眠,T = 跟踪/停止,Z = 僵尸进程%CPU:上次更新到现在的 CPU 时间占用百分比%MEM:进程使用的物理内存百分比TIME+:进程使用的 CPU 时间总计,单位 1/100 秒COMMAND:进程名称(命令名/命令行)
交互子命令:
另外,top 还支持交互子命令,在 top 运行窗口按下面按键,会调整显示效果。
M:根据驻留内存大小进行排序P:根据CPU使用百分比大小进行排序T:根据时间/累计时间进行排序H:将线程查看模式切换为开或关1:显示每个逻辑 CPU 的状况h:显示帮助画面,给出一些简短的命令总结说明k:终止一个进程i:忽略闲置和僵死进程,这是一个开关式命令r:重新安排一个进程的优先级别S:切换到累计模式s:改变两次刷新之间的延迟时间(单位为 s),如果有小数,就换算成 ms(输入 0 值则系统将不断刷新,默认值是 5s)f或者F:从当前显示中添加或者删除项目o或者O:改变显示项目的顺序l:切换显示平均负载和启动时间信息m:切换显示内存信息t:切换显示进程和 CPU 状态信息c:切换显示命令名称和完整命令行w:将当前设置写入 ~/.toprc 文件中
最后,按 q 或 CTRL+C 可退出程序。
示例
显示进程信息:
top
显示完整命令:
top -c
以批处理模式显示程序信息:
top -b
以累积模式显示程序信息:
top -S
设置信息更新次数(更新十次后退出):
top -n 10
设置信息更新时间(更新周期为3秒):
top -d 3
显示指定的进程信息(显示进程号为 pid 的进程信息,CPU、内存占用率等):
top -p <pid>
实时显示 Linux 系统各个线程运行情况(你也可以在 top 运行时按“H”键将线程查看模式切换为开或关):
top -H
列出进程号为 PID 的进程创建的所有线程(也可以使用 ps -T -p <pid> 命令查看):
top -H -p <pid>
通过进程名(而不是 PID)列出该进程创建的所有线程:
top -Hp $(pgrep -f <process_name>)
