Linux 系统在运行中可能会出现各种情况,如内存占用过多、cpu 占用过大等,这些都会影响 Linux 系统的运行,导致用户体验降低,如何查看、监控 Linux 系统中的程序运行情况,并停止内存占用多、cpu 占用大的进程。本篇介绍 top 命令(类似于 Windows 中的任务管理器),实现此目的。

top 命令介绍

简单的在命令后输入 top 命令查看当前系统进程情况。

1
2
3
4
5
6
7
top - 15:32:30 up 4 days, 58 min,  2 users,  load average: 1.15, 1.28, 1.31
Tasks: 959 total, 3 running, 611 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.4 us, 0.1 sy, 0.3 ni, 97.8 id, 0.4 wa, 0.0 hi, 0.1 si, 0.0 st
KiB Mem : 97398976 total, 81255760 free, 3827788 used, 12315424 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 92583264 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

各参数解释如下:

  1. 15:32:30 表示当前时间;
  2. up 4 days, 58 min 表示系统运行时长;
  3. 2 users 表示当前系统有2个用户在使用;
  4. load average: 1.15, 1.28, 1.31 表示负载均衡,3个值分别表示1分钟、5分钟、15分钟前到现在的平均负载值。值越大表示系统运行压力越大;
  5. Tasks 表示系统运行的任务数,分别表示总任务(进程)、正在运行、睡眠、停止、僵尸数;
  6. %Cpu(s) 表示 cpu 运行情况,分别表示用户使用 cpu、系统使用 cpu、用户进程空间内改变过优先级的进程、空闲、等待输入输出、硬件 cpu 中断、软件 cpu 中断、虚拟机占有 cpu 百分比;
  7. KiB Mem 表示内存情况,分别表示总物理内存、空闲的、使用的、缓存的内存量;
  8. KiB Swap 表示虚拟内存情况,分别表示交换内存总量、空闲的、使用的、缓冲的交换内存量;
  9. PID 表示进程 id;
  10. USER 表示进程所有者;
  11. PR 表示进程优先级;
  12. NI 表示nice值。负值表示高优先级,正值表示低优先级;
  13. VIRT 表示进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES;
  14. RES 表示进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA;
  15. SHR 表示共享内存大小,单位kb;
  16. S 表示进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程;
  17. %CPU 表示上次更新到现在的CPU时间占用百分比;
  18. %MEM 表示进程使用的物数理内存百分比;
  19. TIME+ 表示进程使用的CPU时间总计,单位1/100秒;
  20. COMMAND 表示进程名称(命令名/命令行)。

top 命令使用

1
2
# 每 1 秒刷新一次;默认是 3 秒
top -d 1

进入之后,可以使用如下参数有针对性的显示

  • P:以 cpu 使用率排序,默认以此排序;
  • M:以内存使用率排序;
  • N:以 PID 大小排序,从大到小;
  • q: 退出;
  • u:指定用户,需输入用户名;
  • k: 杀掉进程,需输入进程 PID,然后输入信号,如 9,即强制杀掉(kill -9 pid)

如果输入错误可按 esc 健返回。

参考文献

  1. linux的top命令参数详解
  2. Linux top命令详解