top命令¶
欢迎阅读《每天一个Linux命令》系列 !在本篇文章中,将说明top命令用法。
一、top简介¶
top
命令是 Linux 下用于实时监控系统资源使用情况的工具,可以显示 CPU、内存、进程等信息。
二、top使用¶
输入top
,默认进入交互模式,按 q
退出。
在 top
运行时,可以使用以下键盘操作调整显示内容:
按键 | 作用 |
---|---|
q |
退出 top |
h |
显示帮助信息 |
P |
按 CPU 使用率排序(默认) |
M |
按内存使用率排序 |
T |
按运行时间排序 |
N |
按进程 ID (PID) 排序 |
u |
只显示特定用户的进程 |
k |
杀死进程(输入进程 ID 后终止) |
r |
调整进程优先级(修改 nice 值) |
s |
更改刷新间隔(默认 3 秒) |
1 |
显示每个 CPU 的使用情况 |
f |
进入字段管理,调整显示内容 |
X |
高亮显示当前排序列 |
[root@josh ~]# top
top - 13:14:57 up 31 days, 20:38, 1 user, load average: 0.00, 0.04, 0.05
Tasks: 161 total, 1 running, 160 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.8 us, 0.7 sy, 0.0 ni, 98.3 id, 0.2 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3782688 total, 135020 free, 2031800 used, 1615868 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 1419640 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4308 root 20 0 1032748 55344 19120 S 1.0 1.5 1:44.60 YDService
3025 root 20 0 754620 16716 2592 S 0.7 0.4 358:12.40 barad_agent
18615 polkitd 20 0 1855296 466808 3708 S 0.7 12.3 44:37.04 mysqld
1042 postgres 20 0 363216 45080 44116 S 0.3 1.2 0:44.47 postgres
13031 root 20 0 1279716 62372 7936 S 0.3 1.6 0:14.83 mkdocs
19659 nginx 20 0 116656 91248 2668 S 0.3 2.4 0:01.79 nginx
1 root 20 0 191400 4112 2400 S 0.0 0.1 8:46.64 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.61 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 1:59.86 ksoftirqd/0
7 root rt 0 0 0 0 S 0.0 0.0 1:30.61 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 23:13.30 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:08.49 watchdog/0
12 root rt 0 0 0 0 S 0.0 0.0 0:08.68 watchdog/1
13 root rt 0 0 0 0 S 0.0 0.0 1:29.61 migration/1
14 root 20 0 0 0 0 S 0.0 0.0 1:57.80 ksoftirqd/1
16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/1:0H
18 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
19 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns
20 root 20 0 0 0 0 S 0.0 0.0 0:01.97 khungtaskd
21 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeback
22 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd
23 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
24 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
25 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
26 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kblockd
27 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 md
三、top信息分析¶
-
up 31 days, 20:38
:表示机器运行了 31 天 20 小时 38 分。 -
Load Average
:0.00, 0.04, 0.05
表示系统在过去的 1、5、15 分钟内的平均负载非常低 -
Tasks
:共 161 个进程,其中 1 个正在运行,160 个处于休眠状态,没有停止或僵尸进程。系统正常。 -
%CPU
使用情况: -
0.8%
:用户进程(us),意味着系统 CPU 时间的 0.8% 被用户空间程序占用。 -
0.7%
:内核进程(sy),即内核服务所占用的 CPU 时间。 -
98.3%
:空闲(id),表示 CPU 大部分时间都处于空闲状态。 -
0.2%
:等待 I/O(wa),表示有一小部分时间 CPU 在等待磁盘或其他 I/O 操作完成。 -
没有高优先级进程或中断处理程序使用 CPU(hi, si, st 均为 0)。
-
Memory
使用情况: -
Mem
:总内存 3.78 GB,其中 135 MB 是空闲的,约 2 GB 正在使用,1.62 GB 被缓冲和缓存占用。内存使用情况较为合理,没有明显的压力。 -
Swap
:没有使用交换空间,表示物理内存足够,没有发生内存溢出到交换空间的情况。 -
进程相关说明:
-
YDService
:PID是4308,用户是root,占用1.0%的CPU和1.5%的内存。看起来这是一个由腾讯云提供的服务,可能与云服务器的管理和监控有关。 -
barad_agent
:PID是3025,同样由root运行,占用0.7%的CPU和0.4%的内存。此外,它已经运行了358个小时,说明这是一个长期运行的后台进程。可能与安全或监控相关。 -
mysqld
:PID是18615,用户是polkitd,占用0.7%的CPU和12.3%的内存,运行时间超过44小时。显然这是一个MySQL数据库服务器,负责数据库管理,内存占用较高是正常的,因为数据库通常需要大量内存来缓存数据。 -
postgres
:PID是1042,用户是postgres,占用0.3%的CPU和1.2%的内存,运行了不到一小时。这是PostgreSQL数据库服务器,可能在运行一些后台任务。 -
mkdocs
:PID是13031,用户是root,占用0.3%的CPU和1.6%的内存,运行时间不到15分钟。可能是用于生成文档或静态网站的工具。 -
nginx
:PID是19659,用户是nginx,占用0.3%的CPU和2.4%的内存,运行时间不到两分钟。这是Nginx网服务器,可能作为Web服务器或反向代理服务器运行。 -
systemd
:PID是1,用户是root,占用0.0%的CPU和0.1%的内存,运行时间超过8小时。这是系统的初始化进程,负责启动和管理其他进程。 -
kthreadd
:PID是2,用户是root,占用0.0%的CPU和0.0%的内存,运行时间不到一分钟。这是内核线程管理的主要进程,负责创建和管理其他内核线程。 -
kworker/0:0H
:PID是4,用户是root,优先级为-20,占用0.0%的CPU和0.0%的内存,运行时间不到一分钟。这是一个内核工作线程,用于执行异步任务。
通过以上分析,可以看出系统中大部分进程都是内核线程或系统服务,负责各种底层管理和维护任务。用户进程如mysqld、postgres、nginx等占用了较多的资源,特别是mysqld占用了12.3%的内存,可能在执行内存密集型的数据库操作。YDService和barad_agent等腾讯云相关进程占用了较低的资源,主要用于云服务的管理和监控。整体来看,系统资源使用较为平衡,没有明显的资源瓶颈或异常占用。