一、简介
top命令,它提供了一个动态的、交互式的实时视图,显示系统的整体性能信息以及正在运行的进程的相关信息。
语法:
top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
参数说明:
-
-d <秒数>
:指定 top 命令的刷新时间间隔,单位为秒。 -
-n <次数>
:指定 top 命令运行的次数后自动退出。 -
-p <进程ID>
:仅显示指定进程ID的信息。 -
-u <用户名>
:仅显示指定用户名的进程信息。 -
-H
:在进程信息中显示线程详细信息。 -
-i
:不显示闲置(idle)或无用的进程。 -
-b
:以批处理(batch)模式运行,直接将结果输出到文件。 -
-c
:显示完整的命令行而不截断。 -
-S
:累计显示进程的 CPU 使用时间。
二、常用命令
1、top
每隔5秒显示所有进程的资源占用情况。
top
输出结果:
top - 22:00:55 up 24 days, 2:53, 9 users, load average: 0.98, 1.00, 1.18
Tasks: 352 total, 3 running, 349 sleeping, 0 stopped, 0 zombie
%Cpu(s): 15.5 us, 2.3 sy, 0.0 ni, 80.9 id, 0.0 wa, 0.0 hi, 1.2 si, 0.0 st
KiB Mem: 65718652 total, 62077516 used, 3641136 free, 34128 buffers
KiB Swap: 2103292 total, 0 used, 2103292 free. 25792972 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
22115 commonu+ 20 0 6762128 1.327g 17408 S 43.85 2.117 345:07.82 java
28567 commonu+ 20 0 8708724 2.805g 24924 S 29.90 4.475 2466:34 java
10837 commonu+ 20 0 5458872 2.462g 20824 S 20.27 3.929 1198:57 mysqld
6184 commonu+ 20 0 21.236g 2.448g 24532 S 12.29 3.905 932:32.68 java
28414 commonu+ 20 0 7392732 1.647g 31036 S 10.96 2.629 8:11.33 java
26489 commonu+ 20 0 7123736 1.124g 24184 S 3.654 1.793 628:03.13 java
6057 commonu+ 20 0 8329684 2.464g 29904 S 2.658 3.931 2:20.24 java
9765 commonu+ 20 0 8874696 3.010g 21700 S 1.661 4.803 555:24.83 java
31379 root 20 0 21.728g 2.101g 21124 S 1.661 3.352 190:04.57 java
8430 commonu+ 20 0 7162864 995.7m 24928 S 1.329 1.551 183:10.03 java
1127 root 20 0 333224 47260 11164 S 0.997 0.072 710:18.66 monitor_agent_e
31960 commonu+ 20 0 8230332 2.397g 27376 S 0.997 3.825 1:05.29 java
10124 root 20 0 107656 8572 7096 S 0.664 0.013 1:12.09 sshd
1586 commonu+ 20 0 7281036 1.205g 19012 S 0.332 1.923 80:04.54 java
总体系统信息:
- top:系统运行时间和平均负载;
字段 | 说明 |
---|---|
22:00:55 up 24 days | 当前时间 |
9 users | 当前登录用户数 |
load average : 0.98, 1.00, 1.18 | 系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。 |
注:load average 如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了
。
- Tasks:当前运行的进程和线程数目;
字段 | 说明 |
---|---|
352 total | 进程总数 |
3 running | 正在运行的进程数 |
349 sleeping | 睡眠的进程数 |
0 stopped | 停止的进程数 |
0 zombie | 僵尸进程数 |
- %Cpu(s):总体CPU使用率和各个核心的使用情况;
字段 | 说明 |
---|---|
15.5 us | 用户空间占用CPU百分比 |
2.3 sy | 内核空间占用CPU百分比 |
0.0 ni | 用户进程空间内改变过优先级的进程占用CPU百分比 |
80.9 id | 空闲CPU百分比 |
0.0 wa | 等待输入输出的CPU时间百分比 |
0.0 hi | 硬中断(Hardware IRQ)占用CPU的百分比,CPU服务于硬中断所耗费的时间总额 |
1.2 si 、0.0 st | CPU服务于软中断所耗费的时间总额、Steal Time |
- KiB Mem:物理总体内存使用情况、可用内存和缓存;
字段 | 说明 |
---|---|
65718652 total | 物理总内存 |
62077516 used | 已使用的物理内存 |
3641136 free | 空闲的物理内存 |
34128 buffers | 用作内核缓存的内存 |
- KiB Swap:交换区总体内存使用情况、可用内存和缓存;
字段 | 说明 |
---|---|
2103292 total | 交换区总量 |
0 used | 已使用的交换区总量 |
2103292 free | 空闲的交换区总量 |
25792972 cached Mem | 缓冲的交换区总量 |
最后提到的缓冲的交换区总量
,这里解释一下,所谓缓冲的交换区总量,即内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入。
计算可用内存数有一个近似的公式:
可用内存 = Mem.free + Mem.buffers + Swap.cached
进程信息:
字段 | 说明 |
---|---|
PID | 进程ID |
USER | 进程所有者用户名称 |
PR | 优先级 |
NI | nice值。负值表示高优先级,正值表示低优先级 |
VIRT | 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES |
RES | 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA |
SHR | 共享内存大小,单位kb |
S | 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程 |
%CPU | 上次更新到现在的CPU时间占用百分比 |
%MEM | 进程使用的物理内存百分比 |
TIME+ | 进程使用的CPU时间总计,单位1/100秒 |
COMMAND | 命令名/命令行 |
进程信息不单单上面这几列,默认情况下仅显示上面比较重要的几列。
要更改显示内容可以通过 f
键选择显示的内容,按上下键
+ b - z
,可以 显示或隐藏
对应的列,然后按 q
键即可。
隐藏字段说明:
字段 | 说明 |
---|---|
PPID | 父进程ID |
RUSER | Real user name |
UID | 进程所有者的用户id |
GROUP | 进程所有者的组名 |
TTY | 启动进程的终端名。不是从终端启动的进程则显示为 ? |
P | 最后使用的CPU,仅在多CPU环境下有意义 |
TIME | 进程使用的CPU时间总计,单位秒 |
SWAP | 进程使用的虚拟内存中,被换出的大小,单位kb |
CODE | 可执行代码占用的物理内存大小,单位kb |
DATA | 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb |
nFLT | 页面错误次数 |
nDRT | 最后一次写入到现在,被修改过的页面数。 |
WCHAN | 若该进程在睡眠,则显示睡眠中的系统函数名 |
Flags | 任务标志 |
2、top -d 2
每隔2秒显示所有进程的资源占用情况。
3、top -c
每隔5秒显示所有进程的资源占用情况,并显示进程的命令行参数(默认只有进程名)
top -c
输出结果:
top - 22:58:12 up 24 days, 3:51, 8 users, load average: 0.76, 0.93, 1.00
Tasks: 349 total, 1 running, 348 sleeping, 0 stopped, 0 zombie
%Cpu(s): 4.7 us, 1.0 sy, 0.0 ni, 93.7 id, 0.1 wa, 0.0 hi, 0.6 si, 0.0 st
KiB Mem: 65718652 total, 60392984 used, 5325668 free, 34296 buffers
KiB Swap: 2103292 total, 0 used, 2103292 free. 24007620 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
28567 commonu+ 20 0 8708724 2.805g 24924 S 23.88 4.475 2477:35 /data/app/jdk/bin/java -server -Xms2g -Xmx2g -Xmn1g -Dnacos.standalone=true -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m -XX:-Om+
6184 commonu+ 20 0 20.972g 2.448g 24336 S 9.453 3.905 938:58.41 /data/app/jdk/bin/java -Xms2g -Xmx2g -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+Explici+
6057 commonu+ 20 0 8329684 2.473g 29904 S 2.488 3.946 4:56.30 /data/app/jdk/bin/java -server -Xms2g -Xmx2g -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/data/logs/donmConsumer/gc-%t.log -X+
10837 commonu+ 20 0 5458872 2.462g 20824 S 2.488 3.929 1206:57 /data/app/mysql/bin/mysqld --defaults-file=/data/app/mysql/my.cnf --basedir=/data/app/mysql --datadir=/data/appData/mysql --plugin-d+
28414 commonu+ 20 0 7392868 1.655g 31036 S 2.488 2.640 10:09.10 /data/app/jdk/bin/java -server -Xms1g -Xmx1g -XX:+UseG1GC -XX:G1ReservePercent=10 -XX:G1HeapRegionSize=32m -Dfile.encoding=UTF-8 -Du+
8430 commonu+ 20 0 7162864 996.0m 24928 S 1.493 1.552 184:00.29 /data/app/jdk/bin/java -server -Xms1g -Xmx1g -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/data/logs/gatewayServer/gc-%t.log -+
9765 commonu+ 20 0 8874696 3.011g 21700 S 0.995 4.803 556:32.92 /data/app/jdk/bin/java -server -Xms2G -Xmx2G -XX:SurvivorRatio=6 -XX:+AlwaysPreTouch -XX:+UseG1GC -XX:GCTimeRatio=4 -XX:G1HeapRegion+
26489 commonu+ 20 0 7125792 1.125g 24184 S 0.995 1.795 629:06.94 /data/app/jdk/bin/java -server -Xms1g -Xmx1g -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/data/logs/gatewayServerApi/gc-%t.lo+
8 root 20 0 0 0 0 S 0.498 0.000 37:05.98 [rcu_sched]
1586 commonu+ 20 0 7281036 1.205g 19012 S 0.498 1.923 80:15.50 /data/app/jdk/bin/java -server -Xms1g -Xmx1g -XX:+PrintGCDetails -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:G1HeapRegionSize=4M -XX:M+
8148 commonu+ 20 0 7319736 981.9m 27240 S 0.498 1.530 39:57.47 /data/app/jdk/bin/java -server -Xms1g -Xmx1g -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/data/logs/portalServer/gc-%t.log -X+
9327 commonu+ 20 0 216132 53580 3408 S 0.498 0.082 2:33.65 nginx: worker process
10124 root 20 0 107656 8572 7096 S 0.498 0.013 1:26.55 sshd: root@pts/14,pts/15
3、top -p 1234 -p 6789
每隔5秒显示pid为1234、6789两个进程的资源占用情况。