通过 top 实时查看进程的状态,以及系统的一些信息(如 CPU、内存信息等)
top 是一个在前台执行的程序,所以执行后便进入如下的交互界面
正是因为交互界面我们才可以实时的获取到系统与进程的信息。
第一行
| 内容 | 解释 |
|---|---|
| top | 表示当前程序的名称 |
| 11:05:18 | 表示当前的系统的时间 |
| up 8 days,17:12 | 表示该机器已经启动了多长时间 |
| 1 user | 表示当前系统中只有一个用户 |
| load average: 0.29,0.20,0.25 | 分别对应1、5、15分钟内cpu的平均负载 |
load average :the system load is a measure of the amount of work that a computer system is doing 也就是对当前 CPU 工作量的度量。
第二行
进程的情况统计
| 内容 | 解释 |
|---|---|
| Tasks: 26 total | 进程总数 |
| 1 running | 1个正在运行的进程数 |
| 25 sleeping | 25个睡眠的进程数 |
| 0 stopped | 没有停止的进程数 |
| 0 zombie | 没有僵尸进程数 |
第三行
CPU 使用情况
| 内容 | 解释 |
|---|---|
| Cpu(s): 1.0%us(user) | 用户空间进程占用CPU百分比 |
| 1.0% sy(system) | 内核空间运行占用CPU百分比 |
| 0.0%ni(nice值) | 用户进程空间内改变过优先级的进程占用CPU百分比 |
| 97.9%id(idle) | 空闲CPU百分比 |
| 0.0%wa(waiting) | 等待输入输出的CPU时间百分比 |
| 0.1%hi | 硬中断(Hardware IRQ)占用CPU的百分比(IRQ : interrupt request) |
| 0.0%si | 软中断(Software IRQ)占用CPU的百分比 |
| 0.0%st | (Steal time) 是 hypervisor 等虚拟服务中,虚拟 CPU 等待实际 CPU 的时间的百分比 |
CPU 利用率是对一个时间段内 CPU 使用状况的统计,通过这个指标可以看出在某一个时间段内 CPU 被占用的情况,而 Load Average 是 CPU 的 Load,它所包含的信息不是 CPU 的使用率状况,而是在一段时间内 CPU 正在处理以及等待 CPU 处理的进程数情况统计信息,这两个指标并不一样。
第四行
是内存使用情况的统计:
| 内容 | 解释 |
|---|---|
| 8176740 total | 物理内存总量 |
| 8032104 used | 使用的物理内存总量 |
| 144636 free | 空闲内存总量 |
| 313088 buffers | 用作内核缓存的内存量 |
注意
系统的中可用的物理内存最大值并不是 free 这个单一的值,而是 free + buffers + swap 中的 cached 的和
第五行
交换区的使用情况
| 内容 | 解释 |
|---|---|
| total | 交换区总量 |
| used | 使用的交换区总量 |
| free | 空闲交换区总量 |
| cached | 缓冲的交换区总量,内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖 |
第5行之后
| 列名 | 解释 |
|---|---|
| PID | 进程id |
| USER | 该进程的所属用户 |
| PR | 该进程执行的优先级 priority 值 |
| NI | 该进程的 nice 值 |
| VIRT | 该进程任务所使用的虚拟内存的总数 |
| RES | 该进程所使用的物理内存数,也称之为驻留内存数(常驻内存:resident memory) |
| SHR | 该进程共享内存的大小 |
| S | 该进程进程的状态: S=sleep R=running Z=zombie |
| %CPU | 该进程CPU的利用率 |
| %MEM | 该进程内存的利用率 |
| TIME+ | 该进程活跃的总时间 |
| COMMAND | 该进程运行的名字 |
NICE 值叫做静态优先级,是用户空间的一个优先级值,其取值范围是-20至19。这个值越小,表示进程”优先级”越高,而值越大“优先级”越低。nice值中的 -20 到 19,中 -20 优先级最高, 0 是默认的值,而 19 优先级最低
PR 值表示 Priority 值叫动态优先级,是进程在内核中实际的优先级值,进程优先级的取值范围是通过一个宏定义的,这个宏的名称是 MAX_PRIO,它的值为 140。Linux 实际上实现了 140 个优先级范围,取值范围是从 0-139,这个值越小,优先级越高。而这其中的 0 - 99 是实时进程的值,而 100 - 139 是给用户的。
在交互界面中我们可以通过一些指令来操作和筛选
| 常用交互命令 | 解释 |
|---|---|
| q | 退出程序 |
| I | 切换显示平均负载和启动时间的信息 |
| P | 根据CPU使用百分比大小进行排序 |
| M | 根据驻留内存大小进行排序 |
| i | 忽略闲置和僵死的进程,这是一个开关式命令 |
| k | 终止一个进程,系统提示输入 PID 及发送的信号值。一般终止进程用 15 信号,不能正常结束则使用 9 信号。安全模式下该命令被屏蔽。 |