对于Linux系统管理员而言,快速地了解系统的运行情况是一个必备的基本功,系统的监控指标有很多,CPU、内存、I/O、网络等等。在一个服务器出现异常时,如何在短时间内快速地定位问题是解决问题的关键。在这里,最常用的是top
命令。
top
是linux中,用于动态的实时查看系统进程和资源使用情况的命令。它可以显示当前系统中正在运行的进程的详细信息,包括其PID(进程ID),用户,CPU占用率,内存占用率等。通过top
命令,我们可以实时监控系统的性能,找出可能导致系统性能下降的瓶颈。
top命令输出结果
top命令的输出结果分为两个部分,一个是系统统计视图,主要显示当前系统指标;另一个是进程视图,主要统计当前时间点的进程运行情况。下面分两个部分介绍展示的指标:
系统统计视图
- 当前时间和运行时间:
top - 14:23:37 up 10 days, 6:43
,显示当前时间为14:23:37,系统已经运行了10天6小时43分钟; - 用户数量:
1 user
,表示当前有1个用户登录系统。 - 系统负载:
load average: 0.00, 0.01, 0.05
,显示过去1分钟、5分钟和15分钟的平均系统负载。这些负载值是对系统活动量的一种度量,包括等待CPU时间的任务和正在运行的任务。在top命令中,“负载”(load average)是指系统在一段时间内的平均活跃进程数,即平均的就绪态和运行态进程数。 - 任务数量:
Tasks: 100 total, 1 running, 99 sleeping, 0 stopped, 0 zombie
,显示系统中总的任务数量为100,其中1个任务正在运行,99个任务处于睡眠状态,没有停止或僵尸任务。 - CPU使用情况:
%Cpu(s): 2.0 us, 1.0 sy, 0.0 ni, 97.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
,显示CPU的使用情况。其中,us
表示用户空间的使用率,sy
表示内核空间的使用率,ni
表示低优先级任务的使用率,id
表示空闲时间,wa
表示IO等待时间,hi
表示硬件中断,si
表示软件中断,st
表示虚拟化时间。 - 内存使用情况:`KiB Mem : 8061880 total, 15875
进程视图
- 进程ID(PID) :每行的第一个字段是进程的唯一标识符,即PID(Process ID)。
- 用户(USER) :显示运行该进程的用户。
- 优先级(PR) :显示进程的优先级。这个字段的值越低,优先级越高。
- 调度(NI) :显示进程的nice值,用于调整进程的优先级。nice值的范围是-20(最高优先级)到+19(最低优先级)。
- 虚拟内存(VIRT) :显示进程占用的虚拟内存总量,单位为KiB。
- 常驻内存(RES) :显示进程占用的物理内存(即常驻内存)总量,单位为KiB。
- 分享内存(SHR) :显示进程共享的内存总量,单位为KiB。
- 状态(S) :显示进程的状态,如R表示运行,S表示睡眠,Z表示僵尸状态等。
- CPU使用率(%CPU) :显示进程占用的CPU使用率。
- 内存使用率(%MEM) :显示进程占用的物理内存使用率。
- 运行时间(TIME+) :显示进程运行的总时间,格式为“HH:MM:SS”或“DD-HH:MM:SS”。
- 命令名(COMMAND) :显示进程的命令名或名称。
常用参数
除此之外top命令还可以加其它的参数。
- 查看指定进程的CPU占用情况(以pid=1234为例):
top -p 1234
- 查看指定用户的进程信息(以用户名为root为例):
top -u root
- 以KB为单位显示内存使用情况:
top -k
- 按CPU使用率排序:
top -s cpu
- 其他排序方式
除了按CPU排序,还提供了其他排序方式:
top -s <sort_key>
常用的<sort_key>
选项包括:
pid
:按照进程ID进行排序。
cpu
:按照CPU使用率进行排序。
mem
:按照内存使用率进行排序。
time
:按照累计CPU占用时间进行排序。