Linux系统中Top命令可以让用户实时动态的观察了解系统的总体运行情况。该命令除了能够显示系统的总体运行情况外,还能显示被Linux内核管理的任务列表。Top命令显示的系统总体运行情况的信息的类型以及跟任务列表有关的信息的类型、顺序、大小都是可配置的,并且配置结果系统重新启动后也保持有效。Top命令的使用比较简单,但是显示的系统信息和任务列表信息的项目、类型比较多,并且多数是缩写形式,理解记忆比较麻烦,所以我们在此对这些信息进行归纳总结,以方便参考查阅。
1.Top命令的使用
Top命令的启动:[root@localhost ~]# top -d 2 //参数-d 2表示延迟2秒更新显示
Top命令的退出:可以按‘q’键或者Ctrl+c。
显示内容选择:通过 f 键可以选择显示的内容,按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。
显示顺序调整:按 o 键可以改变列的显示顺序,按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。
保存显示配置信息:退出Top命令之前按‘W’(大写)键可以将当前配置保存下来,下次再运行该命令就会按照用户习惯来显示系统信息了。
Top命令运行的显示界面如下图:
2.Top命令显示信息详解

表1 系统总体运行情况
| top- 16:10:41 | Up 5:01 | 3 users | load average: 0.00, 0.00, 0.00 | |||||||
| 系统当前时间 | 系统运行5小时1分钟 | 当前登录用户数 | 系统平均负载 | |||||||
| Tasks: 226 total, 1 running, 225 sleeping, 0 stopped, 0 zombie | ||||||||||
| 任务:共226任务,正在运行:1个,休眠状态:225个,停止:0个,僵尸进程:0个 | ||||||||||
| Cpu(s): | 1.4%us, | 0.8%sy, | 0.0%ni, | 97.9%id, | 0.0%wa, | 0.0%hi, | 0.1%si, | 0.0%st | ||
| CPU利用情况 | 用户模式时间 | 系统模式时间 | 低优先权用户模式 | 空闲 | I/O等待时间 | 硬件中断服务时间 | 软件中断服务时间 | 被窃取时间 | ||
| Mem: 1915516k total, 954192k used, 961324k free, 34880k buffers | ||||||||||
| 物理内存: 内存总数1915516k,已使用954192k,剩余961324k,缓冲内存 34880k | ||||||||||
| Swap: 2097144k total, 0k used, 2097144k free, 291444k cached | ||||||||||
| 交换分区:总容量2097144k, 已用0k,剩余2097144k ,缓冲291444k | ||||||||||
注释:
(1)us = user mode; sy = system mode;ni = low priority user mode (nice);id = idle task;wa = I/O waiting;hi = servicing IRQs;si = servicing soft IRQs;st = steal (time given to other DomU instances);
(2)load average: 即任务队列的平均长度,三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值;
(3)%ni:用户进程内改变过优先级的进程占用CPU百分比;
(4)%st:被窃取时间,比如虚拟机实例管理时间;
(5)buffers:出现在Mem,实际上是要从内存写入硬盘的数据,由于内存和硬盘的IO速度不一样,解决的是写效率的问题;
(6)cached:出现在Swap,实际上是要从硬盘读入内存的数据,由于再读一次硬盘速度会很慢,虚拟内存就将一些次重要的文件放在cached,让二次读取同样数据时间会更快一点。
表2 任务列表
| 项目 | 项目解释 | 项目说明 | 
| PID | Process Id | 进程的唯一ID号 | 
| USER | User Name | 用户名,进程的所有者 | 
| PR | Priority | 进程的优先权,其值越小,优先级就越高。 | 
| NI | Nice value | 负值表示高优先级,正值表示低优先级。通过设置Nice值可以调整进程的优先级。 | 
| VIRT | Virtual Image(kb) | 进程占用的虚拟内存总量 | 
| RES | Resident size (kb) | 进程占用的物理内存总量 | 
| SHR | Shared Mem size (kb) | 进程占用共享内存的容量(和其他进程共享) | 
| S | Process Status | 进程状态 | 
| %CPU | CPU usage | 上次更新到现在的占用CPU时间的百分比 | 
| %MEM | Memory usage (RES) | 进程占用物理内的存百分比 | 
| TIME+ | CPU Time, hundredths | 进程使用的CPU时间总计,单位为1/100秒 | 
| COMMAND | Command line or Program name | 命令行或程序名 | 
注释:
(1)进程状态的值:D=不可中断的睡眠状态;R=正在运行;S=睡眠状态;T=被跟踪或停止状态;Z=僵尸进程。
(2)PR和NI的关系:NI值取值范围通过NICE_WIDTH宏定义实现,从-20至19,共40级,映射到实际的优先级范围是100-139;PI取值范围是通过MAX_PRIO宏定义实现的,它的值为140,Linux实际上实现了140个优先级范围,取值范围是从0-139;进程的实际优先级是由旧的优先级和新设置的Nice值相加的确定的,即PR=PR+NI,也就是说进程最后的优先级是由PR和NIC共同决定的。
表3 其它显示项目
| 项目 | 项目解释 | 项目说明 | 
| PPID | Parent Process Pid | 父进程id | 
| GROUP | Group Name | 进程所有者所属组名 | 
| TTY | Controlling Tty | 启动进程的终端名,不是从终端启动的进程则显示为 ‘?’ | 
| TIME | CPU Time | 进程使用的CPU时间总计,单位秒 | 
| SWAP | Swapped size (kb) | 进程利用虚拟内存情况,占用交换分区的大小,单位kb | 
| Flags | Task Flags | 进程标志 | 
| WCHAN | Sleeping in Function | 若该进程在睡眠,则显示睡眠所处中的系统函数名,正在运行的进程显示’-’ | 
| CODE | Code size (kb) | 可执行代码占用的物理内存大小,单位kb | 
| DATA | Data+Stack size (kb) | 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb | 
| nFLT | Page Fault count | 由于页面不在内存引起的读写错误数(错页数) | 
| nDRT | Dirty Pages count | 从最后一次写盘起被修改过的页面数(脏页数) | 
| P | Last used CPU (SMP) | 在对称多处理环境中最后使用的处理器编号 | 
| RUSER | Real User Name | 进程所有者的实际用户名 | 
| UID | User Id | 进程所有者的有效ID号 | 
参考文献:
原文:https://www.cnblogs.com/Freeland98/p/13900927.html