Bootstrap

Linux 系统中一个非常强大的实时监控系统性能的命令top

top 是 Linux 系统中一个非常强大的实时监控系统性能的命令行工具。它提供了关于系统正在运行的进程以及系统总体状态的实时动态视图。使用 top,你可以看到关于 CPU 使用率、内存使用情况、进程信息、运行时间、登录用户等关键数据。

如何使用 top

  1. 打开终端:首先,打开你的 Linux 终端(Terminal)。

  2. 运行 top:在终端中输入 top 并按回车。这将启动 top 命令,显示系统当前的实时状态。

top 界面的主要部分

  • 顶部区域:显示系统的整体信息,包括当前时间、系统运行时间、登录用户数、平均负载等。
  • 任务(Tasks)和 CPU 状态:显示当前正在运行的进程数、休眠中的进程数、停止的进程数以及僵尸进程数,还有 CPU 的使用情况(用户模式、系统模式、空闲等)。
  • 内存和交换空间:展示物理内存和交换空间的使用情况。
  • 进程列表:列出当前系统上所有进程的详细信息,通常包括 PID(进程ID)、用户、优先级、虚拟内存使用量、物理内存使用量、共享内存大小、状态(如运行、睡眠等)、CPU 使用率、内存使用率、运行的时间以及命令行。

常用 top 命令选项

  • -u 用户名:只显示指定用户的进程。
  • -n 次数:指定 top 命令更新屏幕的次数,之后自动退出。
  • -d 秒数:设置 top 命令更新的时间间隔(以秒为单位)。
  • -b:以批处理模式运行 top,适用于将输出重定向到文件或管道。
  • -i:忽略闲置和僵尸进程。
  • -H:以线程模式运行,显示所有线程。

常用 top 示例

[root@server-UAT ~]# top
top - 08:40:45 up 31 days, 13:05,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 370 total,   1 running, 369 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.4 us,  0.7 sy,  0.0 ni, 98.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 16264684 total,   174156 free,  1130488 used, 14960040 buff/cache
KiB Swap:  8257532 total,  7725564 free,   531968 used.  5536484 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
23266 root      20   0  162400   2428   1540 R   6.2  0.0   0:00.02 top
    1 root      20   0  191264   3080   1676 S   0.0  0.0  13:09.64 systemd
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.56 kthreadd
    4 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H
    6 root      20   0       0      0      0 S   0.0  0.0   0:01.23 ksoftirqd/0
    7 root      rt   0       0      0      0 S   0.0  0.0   0:00.53 migration/0
    8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh
    9 root      20   0       0      0      0 S   0.0  0.0   7:49.02 rcu_sched
   10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 lru-add-drain
   11 root      rt   0       0      0      0 S   0.0  0.0   0:15.23 watchdog/0
   12 root      rt   0       0      0      0 S   0.0  0.0   0:13.60 watchdog/1
   13 root      rt   0       0      0      0 S   0.0  0.0   0:00.90 migration/1
   14 root      20   0       0      0      0 S   0.0  0.0   0:02.61 ksoftirqd/1

显示指定用户oracle的进程

[root@server-UAT ~]# top -u oracle
top - 08:29:43 up 31 days, 12:54,  1 user,  load average: 0.04, 0.03, 0.05
Tasks: 369 total,   1 running, 368 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni, 99.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 16264684 total,   171280 free,  1128428 used, 14964976 buff/cache
KiB Swap:  8257532 total,  7725564 free,   531968 used.  5538556 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 2268 oracle    20   0    9.9g 269876 265896 S   0.3  1.7  10:23.32 oracle
 2105 oracle    20   0  242712   3360   2552 S   0.0  0.0   2:38.54 tnslsnr
 2237 oracle    20   0    9.9g  16608  16300 S   0.0  0.1   6:50.13 oracle
 2239 oracle    20   0    9.9g  10340  10148 S   0.0  0.1   9:05.71 oracle
 2241 oracle    20   0    9.9g   9748   9640 S   0.0  0.1  14:57.23 oracle
 2246 oracle    20   0    9.9g  10052   9860 S   0.0  0.1   1:28.28 oracle
 2248 oracle    20   0    9.9g   9724   9596 S   0.0  0.1   2:57.22 oracle
 2250 oracle    20   0    9.9g  46616  45456 S   0.0  0.3   3:02.96 oracle
 2252 oracle    20   0    9.9g  21956  19956 S   0.0  0.1  59:32.35 oracle
 2254 oracle    20   0    9.9g   1.0g   1.0g S   0.0  6.5   1:35.55 oracle
 2256 oracle    20   0    9.9g   2.7g   2.7g S   0.0 17.2   4:34.20 oracle
 2258 oracle    20   0    9.9g   2.9g   2.9g S   0.0 18.5   4:33.15 oracle
 2260 oracle    20   0    9.9g  30660  30088 S   0.0  0.2   3:21.56 oracle
 2262 oracle    20   0    9.9g 282116 281648 S   0.0  1.7  11:44.49 oracle

显示指定用户oracle的进程且更新的时间间隔3秒

[root@server-UAT ~]# top -u oracle -d 3
top - 08:30:28 up 31 days, 12:55,  1 user,  load average: 0.08, 0.04, 0.05
Tasks: 369 total,   1 running, 368 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni, 99.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 16264684 total,   178468 free,  1148128 used, 14938088 buff/cache
KiB Swap:  8257532 total,  7725564 free,   531968 used.  5518860 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 2252 oracle    20   0    9.9g  21956  19956 S   0.3  0.1  59:32.41 oracle
 2268 oracle    20   0    9.9g 269876 265896 S   0.3  1.7  10:23.33 oracle
 2105 oracle    20   0  242712   3360   2552 S   0.0  0.0   2:38.55 tnslsnr
 2237 oracle    20   0    9.9g  16608  16300 S   0.0  0.1   6:50.13 oracle
 2239 oracle    20   0    9.9g  10340  10148 S   0.0  0.1   9:05.72 oracle
 2241 oracle    20   0    9.9g   9748   9640 S   0.0  0.1  14:57.24 oracle
 2246 oracle    20   0    9.9g  10052   9860 S   0.0  0.1   1:28.28 oracle
 2248 oracle    20   0    9.9g   9724   9596 S   0.0  0.1   2:57.22 oracle
 2250 oracle    20   0    9.9g  46616  45456 S   0.0  0.3   3:02.96 oracle
 2254 oracle    20   0    9.9g   1.0g   1.0g S   0.0  6.5   1:35.55 oracle
 2256 oracle    20   0    9.9g   2.7g   2.7g S   0.0 17.2   4:34.21 oracle
 2258 oracle    20   0    9.9g   2.9g   2.9g S   0.0 18.5   4:33.16 oracle

交互模式

top 运行期间,你可以按以下键进入交互模式,进行各种操作:

  • P:按 CPU 使用率对进程进行排序。
  • M:按内存使用量对进程进行排序。
  • T:按时间/累积时间对进程进行排序。
  • k:杀死一个进程(需要先输入进程ID)。
  • q:退出 top
  • h:显示帮助屏幕。

top 是 Linux 系统管理员和高级用户监控系统性能的重要工具之一。通过熟悉它的使用,你可以更好地理解你的系统是如何工作的,以及在需要时采取适当的措施来优化性能。

;