0、背景
在 Linux 系统中,top 命令是一个非常强大的实时系统监控工具,用于查看系统当前的资源使用情况,包括 CPU、内存、磁盘等的使用状态。无论是在服务器管理还是日常的系统维护中,top 命令都为管理员提供了关键的性能数据。
1、基础用法
- -d 或 --delay, 此参数指定 top 更新数据的延迟时间,单位是秒。例如,top -d 5 会每隔 5 秒刷新一次输出。
- -n 或 --iterations, 设置 top 输出的更新次数。例如,top -n 10 会显示 10 次更新后自动退出。
- -b 或 --batch, 批处理模式。当你希望将 top 输出结果保存到文件中时,使用此模式,可以将 top 输出结果发送到文件,而不在终端中显示。
- -u 或 --user, 此参数让 top 只显示指定用户的进程信息。例如,top -u username 会显示 username 用户的进程。
- -p 或 --pid, 此参数让你查看特定 PID(进程 ID)的进程。例如,top -p 1234 只显示 PID 为 1234 的进程。
- -c 或 --command, 显示命令行而不仅仅是程序名称。在一些进程使用相同程序时,这个选项帮助你了解具体的命令行。
- -H,显示线程级别的信息
2、输出信息详解
运行top命令时,通常会输出以下信息:
top - 15:04:20 up 1 day, 2:22, 2 users, load average: 0.02, 0.03, 0.01
Tasks: 180 total, 1 running, 179 sleeping, 0 stopped, 0 zombie
%Cpu(s): 3.5 us, 1.2 sy, 0.0 ni, 94.9 id, 0.1 wa, 0.1 hi, 0.2 si, 0.0 st
MiB Mem : 2048.1 total, 230.1 free, 1274.7 used, 543.3 buff/cache
MiB Swap: 1024.0 total, 800.0 free, 224.0 used. 400.0 avail Mem
2.1 系统状态
top - 15:04:20 up 1 day, 2:22, 2 users, load average: 0.02, 0.03, 0.01
- 15:04:20:当前系统时间。
- up 1 day, 2:22:系统已运行时间为 1 天 2 小时 22 分钟。
- 2 users:当前登录的用户数量。
- load average:系统的负载情况,通常显示 1 分钟、5 分钟、15 分钟的平均负载值。值越低,系统负载越小,需要注意的是这里的负载并不单单是CPU的负载,而是整机的负载
2.2 任务状态
Tasks: 180 total, 1 running, 179 sleeping, 0 stopped, 0 zombie
- 180 total:系统中总共运行的进程数。
- 1 running:当前正在运行的进程数。
- 179 sleeping:处于休眠状态的进程数。
- 0 stopped:已停止的进程数。
- 0 zombie:僵尸进程的数量。
注意没有加-H时显示的是进程信息,加上-H显示的是线程资源
2.3 CPU使用情况
%Cpu(s): 3.5 us, 1.2 sy, 0.0 ni, 94.9 id, 0.1 wa, 0.1 hi, 0.2 si, 0.0 st
- us (user):用户空间占用 CPU 的百分比(除去内核部分)。
- sy (system):内核空间占用 CPU 的百分比。
- ni (nice):改变过优先级的进程占用 CPU 的百分比。
- id (idle):CPU 空闲百分比。
- wa (iowait):等待输入/输出操作的进程占用 CPU 的百分比。
- hi (hardware interrupt):硬件中断占用 CPU 的百分比。
- si (software interrupt):软件中断占用 CPU 的百分比。
- st (steal):虚拟化环境中,其他虚拟机占用的 CPU 资源百分比。
2.4 内存使用情况
MiB Mem : 2048.1 total, 230.1 free, 1274.7 used, 543.3 buff/cache
- total:系统总内存大小。
- free:剩余的空闲内存。
- used:已使用的内存。
- buff/cache:缓存和缓冲区占用的内存
2.5 交换区使用情况
MiB Swap: 1024.0 total, 800.0 free, 224.0 used. 400.0 avail Mem
- total:交换区的总大小。
- free:剩余的交换区空间。
- used:已使用的交换区空间。
- avail Mem:可用于分配给进程的可用内存。
2.6 进程信息
- PID:进程 ID。
- USER:进程所属用户。
- PR:进程的优先级。
- NI:进程的优先级调整值。
- VIRT:进程占用的虚拟内存总量。
- RES:进程占用的物理内存大小。
- SHR:进程占用的共享内存大小。
- S:进程的状态,常见的有:
S:睡眠状态(Sleep)。
R:运行状态(Running)。
Z:僵尸状态(Zombie)。
I:空闲状态 - %CPU:进程使用的 CPU 百分比。
- %MEM:进程使用的内存百分比。
- TIME+:进程的累计 CPU 时间。
- COMMAND:启动进程的命令。
3、top命令的排序和过滤功能
在 top 界面中,你可以使用以下快捷键来排序和过滤:
- M:按内存使用量排序
- P:按 CPU 使用量排序
- T:按时间排序
- k:杀死进程, 输入 PID 后,可以结束进程
- r:改变进程优先级(修改 nice 值)s
这几个命令非常有用,需要注意的是上面的命令是区分大小写的。
4、总结
top 命令是 Linux 系统中用于监控资源使用情况的重要工具。通过各种参数的灵活组合,可以实时查看 CPU、内存、交换区等资源的使用情况,并对进程进行管理。熟练掌握 top 命令和它的各项输出信息,将有助于程序员高效地管理和维护 Linux 系统的性能。