用 top 命令查看 CPU 使用率
用 top 命令查看 CPU 使用率
前言
在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要。在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况。运行 top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式 — 用基于 top 的命令,可以控制显示方式等等。退出 top 的命令为 q (在 top 运行中敲 q 键一次)。
运行
在命令行中输入 “top” 即可启动 top ,运行后如下图所示:
top - 14:56:14 up 1 day, 7:15, 2 users, load average: 0.28, 0.32, 0.26 ←第一部分 Tasks: 54 total, 1 running, 53 sleeping, 0 stopped, 0 zombie 系统信息栏 Cpu(s): 0.7% us, 2.5% sy, 0.0% ni, 96.8% id, 0.0% wa, 0.0% hi, 0.0% si Mem: 199128k total, 193748k used, 5380k free, 5436k buffers Swap: 409648k total, 204668k used, 204980k free, 16444k cached
q ←第二部分 -- 中间部分的内部命令提示栏,如按q退出
PID USER PR NI %CPU TIME+ %MEM VIRT RES SHR S COMMAND ←第三部分 6973 root 17 0 1.2 0:01.57 1.2 8640 2312 1844 S sshd ←进程列表栏 2496 mysql 16 0 0.5 25:58.88 1.9 124m 3740 1924 S mysqld 2522 root 16 0 0.2 2:28.28 0.9 15300 1828 1428 S httpd 7009 root 17 0 0.2 0:02.32 0.5 2120 984 784 R top 3 root 5 -10 0.1 3:26.97 0.0 0 0 0 S events/0 420 root 15 0 0.1 0:44.21 0.0 0 0 0 S kjournald 1 root 16 0 0.0 4:12.11 0.2 2296 364 336 S init 2 root 34 19 0.0 0:00.01 0.0 0 0 0 S ksoftirqd/0 4 root 5 -10 0.0 0:00.23 0.0 0 0 0 S khelper 5 root 14 -10 0.0 0:00.00 0.0 0 0 0 S kacpid 13 root 5 -10 0.0 0:25.80 0.0 0 0 0 S kblockd/0 14 root 25 0 0.0 0:00.00 0.0 0 0 0 S khubd 31 root 20 0 0.0 0:00.00 0.0 0 0 0 S pdflush 32 root 15 0 0.0 0:50.12 0.0 0 0 0 S pdflush 33 root 16 0 0.0 7:42.89 0.0 0 0 0 S kswapd0 34 root 6 -10 0.0 0:00.00 0.0 0 0 0 S aio/0 178 root 25 0 0.0 0:00.00 0.0 0 0 0 S kseriod 414 root 6 -10 0.0 0:00.00 0.0 0 0 0 S ata/0 415 root 7 -10 0.0 0:00.00 0.0 0 0 0 S ata_aux 1056 root 6 -10 0.0 0:00.00 0.0 0 0 0 S kauditd 1266 root 6 -10 0.0 0:03.42 0.1 1812 276 276 S udevd 1846 root 20 0 0.0 0:00.00 0.0 0 0 0 S kjournald 2361 root 16 0 0.0 0:12.16 0.2 3020 428 384 S syslogd 2365 root 15 0 0.0 0:00.05 0.1 1932 284 284 S klogd 2377 root 21 0 0.0 0:00.00 0.1 2656 268 268 S acpid 2389 root 16 0 0.0 0:54.68 0.3 4480 680 564 S sshd 2402 root 15 0 0.0 0:00.03 0.2 2988 392 392 S xinetd 2463 root 20 0 0.0 0:00.26 0.2 6180 396 396 S mysqld_safe 2531 root 16 0 0.0 1:01.96 0.2 4928 452 392 S crond 2548 root 16 0 0.0 0:02.87 0.2 2360 328 292 S atd 2577 root 18 0 0.0 0:00.20 0.6 4084 1252 976 S login 2622 root 18 0 0.0 0:00.00 0.1 2360 268 268 S mingetty 2623 root 18 0 0.0 0:00.01 0.1 2204 268 268 S mingetty 2624 root 18 0 0.0 0:00.00 0.1 3492 268 268 S mingetty 2625 root 18 0 0.0 0:00.00 0.1 1940 268 268 S mingetty 2626 root 18 0 0.0 0:00.00 0.1 2884 268 268 S mingetty 2915 apache 16 0 0.0 1:52.01 7.0 26784 13m 2336 S httpd 2939 apache 17 0 0.0 1:51.39 4.2 27052 8344 2296 S httpd 2940 apache 16 0 0.0 1:40.20 4.1 26872 8148 2316 S httpd 2941 apache 16 0 0.0 2:04.76 7.4 26808 14m 2492 S httpd 3051 apache 16 0 0.0 1:45.20 5.7 27060 11m 2320 S httpd
各列表部分详解
如上图所示,top 的全屏对话模式可分为3部分:系统信息栏、命令输入栏、进程列表栏。
- 第一部分 — 最上部的 系统信息栏 :
- 第一行(top):
“14:56:14”为系统当前时刻;
“1 day, 7:15”为系统启动后到现在的运作时间;
“2 users”为当前登录到系统的用户,更确切的说是登录到用户的终端数 — 同一个用户同一时间对系统多个终端的连接将被视为多个用户连接到系统,这里的用户数也将表现为终端的数目;
“load average”为当前系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数,一般的可以认为这个数值超过 CPU 数目时,CPU 将比较吃力的负载当前系统所包含的进程;
- 第二行(Tasks):
“54 total”为当前系统进程总数;
“1 running”为当前运行中的进程数;
“53 sleeping”为当前处于等待状态中的进程数;
“0 stoped”为被停止的系统进程数;
“0 zombie”为被复原的进程数;
- 第三行(Cpus):
分别表示了 CPU 当前的使用率;
- 第四行(Mem):
分别表示了内存总量、当前使用量、空闲内存量、以及缓冲使用中的内存量;
- 第五行(Swap):
表示类别同第四行(Mem),但此处反映着交换分区(Swap)的使用情况。通常,交换分区(Swap)被频繁使用的情况,将被视作物理内存不足而造成的。
- 第一行(top):
- 第二部分 — 中间部分的内部命令提示栏:
- s - 改变画面更新频率
- l - 关闭或开启第一部分第一行 top 信息的表示
- t - 关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示
- m - 关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示
- N - 以 PID 的大小的顺序排列表示进程列表(第三部分后述)
- P - 以 CPU 占用率大小的顺序排列进程列表 (第三部分后述)
- M - 以内存占用率大小的顺序排列进程列表 (第三部分后述)
- h - 显示帮助
- n - 设置在进程列表所显示进程的数量
- q - 退出 top
top 运行中可以通过 top 的内部命令对进程的显示方式进行控制。内部命令如下表:
- 第三部分 — 最下部分的进程列表栏:
以 PID 区分的进程列表将根据所设定的画面更新时间定期的更新。通过 top 内部命令可以控制此处的显示方式
应用
一般的,我们通过远程监控的方式对服务器进行维护,让服务器本地的终端实时的运行 top ,是在服务器本地监视服务器状态的快捷便利之一。