[Linux]一条命令了解系统监控

35 阅读4分钟

对于Linux系统管理员而言,快速地了解系统的运行情况是一个必备的基本功,系统的监控指标有很多,CPU、内存、I/O、网络等等。在一个服务器出现异常时,如何在短时间内快速地定位问题是解决问题的关键。在这里,最常用的是top命令。

top是linux中,用于动态的实时查看系统进程和资源使用情况的命令。它可以显示当前系统中正在运行的进程的详细信息,包括其PID(进程ID),用户,CPU占用率,内存占用率等。通过top命令,我们可以实时监控系统的性能,找出可能导致系统性能下降的瓶颈。

top命令输出结果

1694314385(1).png

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占用时间进行排序。