top命令主要用来监控系统实时负载率、进程的资源占用率及其它各项系统状态属性是否正常
top命令输出截图
top命令的结果分为两部分
- 统计信息:最上方五行是系统整体的运行统计信息
- 进程信息:统计信息下方以类表格的形式显示各各进程的详细信息
- 第1行:top任务队列信息(与uptime命令结果相同)
- 系统当前时间
- 系统运行时间,未重启时间
- 当前登录用户数
- 系统复杂:即任务队列的平均长度,3个数值分别统计最近1,5,15分钟的系统平均负载(理想负荷=cpu核数*0.7,大于该值表示超负荷)
- 第2行:Tasks进程相关信息
- 进程总数
- 正在运行的进程数
- 睡眠的进程数
- 停止的进程数
- 僵尸进程数
- 第3行:CPU相关信息(多核CPU的话,按数字1可在每核统计情况和平均统计情况间切换显示)
- us(user):用户空间占用cpu百分比
- sy(system):系统内核占用cpu百分比
- ni(nice):用户进程空间内改变过优先级的进程占用cpu百分比(该值过大,说明有可优化的地方)
- id(idle):空闲cpu百分比
- wa(wait):等的I/O占用cpu百分比
- hi(hardware interrupt):服务于硬中断所占用CPU百分比
- si(software interrupt):服务于软中断所占用CPU百分比
- st(steal time):虚拟机被hypervisor偷去的CPU时间
- 第4,5行:Mem内存相关信息(free命令输出中包含该部分信息)
- Mem-->total 物理内存总量
- Mem-->used 使用的物理内存总量
- Mem-->free 空闲内存总量
- Mem-->buffers 缓存区的内存总量
- Swap-->total 交换区总量
- Swap-->used 已使用交换区总量
- Swap-->free 空闲交换区
- Swap-->cached 缓冲的交换区总量(内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入。)
进程信息说明
在top命令中按f按可以查看显示的列信息,按对应字母来开启/关闭列,大写字母表示开启,小写字母表示关闭。带*号的是默认列
- * A: PID = Process Id // 进程Id
- * E: USER = User Name // 进程所有者的用户名
- * H: PR = Priority // 优先级
- * I: NI = Nice value // 负值表示高优先级,正值表示低优先级
- * O: VIRT = Virtual Image (kb) // 进程使用的虚拟内存总量,单位kb
- * Q: RES = Resident size (kb) // 进程使用的、未被换出的物理内存大小,单位kb
- * T: SHR = Shared Mem size (kb) // 共享内存大小,单位kb
- * W: S = Process Status // 进程状态。D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程
- * K: %CPU = CPU usage // 上次更新到现在的CPU时间占用百分比
- * N: %MEM = Memory usage (RES) // 进程使用的物理内存百分比
- * M: TIME+ = CPU Time, hundredths // 进程使用的CPU时间总计,单位1/100秒
- * B: PPID = Parent Process Pid // 父进程Id
- c: RUSER = Real user name //
- d: UID = User Id // 进程所有者的用户id
- f: GROUP = Group Name // 进程所有者的组名
- g: TTY = Controlling Tty // 启动进程的终端名。不是从终端启动的进程则显示为 ?
- j: P = Last used cpu (SMP) // 最后使用的CPU,仅在多CPU环境下有意义
- p: SWAP = Swapped size (kb) //
- l: TIME = CPU Time // 进程使用的CPU时间总计,单位秒
- r: CODE = Code size (kb) // 可执行代码占用的物理内存大小,单位kb
- s: DATA = Data+Stack size (kb) // 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
- u: nFLT = Page Fault count // 页面错误次数
- v: nDRT = Dirty Pages count // 最后一次写入到现在,被修改过的页面数
- y: WCHAN = Sleeping in Function // 若该进程在睡眠,则显示睡眠中的系统函数名
- z: Flags = Task Flags <sched.h> // 任务标志,参考 sched.h
- * X: COMMAND = Command name/line // 命令名/命令行
top命令选项(不同内核支持程度不一样)
- -b:以批处理模式操作
- -c:显示完整的治命令 //COMMAND字段,显示完整的路径
- -d:屏幕刷新间隔时间
- -I:忽略失效过程
- -s:保密模式
- -S:累积模式
- -i<时间>:设置间隔时间
- -u<用户名>:指定用户名
- -p<进程号>:指定进程
- -n<次数>:循环显示的次数
top交换命令
- 1:显示CPU详细信息,每核显示一行
- d / s :修改刷新频率,单位为秒
- h:可显示帮助界面 //里面有个字母代表的操作说明
- n:指定进程列表显示行数,默认为满屏行数
- q:退出top
- l:隐藏/显示第1行负载信息;
- t:隐藏/显示第2~3行CPU信息;
- m:隐藏/显示第4~5行内存信
- M:根据驻留内存大小进行排序
- P:根据CPU使用百分比大小进行排序
- T:根据时间/累计时间进行排序