Linux top命令参数详解
top命令是一个在Linux和其他类Unix系统上常用的实时系统监控工具,它可以显示系统的整体性能信息以及正在运行的进程的相关信息。本文将介绍top命令的基本用法、常用参数、输出结果解析和功能交互操作。希望本文能对您有所帮助。
1. top命令的基本用法
top命令的基本语法格式如下:
top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
其中,方括号表示可选参数,以下是各个参数的含义:
-d delay:指定top命令显示页面更新一次的间隔,单位为秒,默认为5秒。
-q:忽略优先级限制,只有超级用户才能使用此选项。
-c:显示完整的命令行而不截断。
-S:累计显示进程的CPU使用时间。
-s:安全模式,不允许交互操作。
-i:不显示闲置(idle)或无用的进程。
-n:指定top命令运行的次数后自动退出。
-b:以批处理(batch)模式运行,直接将结果输出到文件。
例如,如果要每隔2秒更新一次页面,并显示完整的命令行,可以使用以下命令:
top -d 2 -c
如果要显示指定进程ID(pid)的信息,可以使用以下命令:
top -p pid
如果要显示指定用户名(user)的进程信息,可以使用以下命令:
top -u user
2. top命令的常用参数
除了上述基本参数外,top命令还支持一些常用参数,这些参数可以在top命令运行时通过按键来切换或调整。以下是一些常用参数的说明:
h:显示帮助信息。
k:终止一个进程,需要输入进程ID和信号代码。
r:重设一个进程的优先级(nice值),需要输入进程ID和新的nice值。
f:进入字段选择模式,可以选择要显示或隐藏哪些字段。
o:进入排序选择模式,可以选择按照哪个字段进行排序。
l:切换是否显示第一行(系统负载信息)。
t:切换是否显示第二行(任务信息)和第三行(CPU信息)。
m:切换是否显示第四行(内存信息)和第五行(交换区信息)。
s:改变屏幕更新频率,需要输入新的更新间隔。
n:改变要显示的进程数量,需要输入新的数量值。
q:退出top命令。
3. top命令的输出结果解析
top命令的输出结果可以分为两部分:系统整体统计信息和进程统计信息。系统整体统计信息包括前五行,进程统计信息包括第八行开始的每个进程的相关信息。我们从上往下逐行依次进行说明。
3.1 系统整体统计信息
3.1.1 第一行
第一行包括以下内容:
top - 16:20:38 up 12 days, 5:24, 2 users, load average: 0.04, 0.03, 0.05
其中:
top - 16:20:38:表示当前时间为16:20:38。
up 12 days, 5:24:表示系统已经运行了12天5小时24分钟。
2 users:表示当前有2个用户登录系统。
load average: 0.04, 0.03, 0.05:表示系统的平均负载,即任务队列的平均长度。三个数值分别为1分钟、5分钟、15分钟前到现在的平均值。
系统的平均负载反映了系统的压力情况,一般来说,平均负载不应该超过CPU的核心数,否则可能会导致性能下降。但是,平均负载高并不一定意味着CPU的使用率高,也可能是由于IO等待或其他原因造成的。
3.1.2 第二行
第二行包括以下内容:
Tasks: 127 total, 1 running, 126 sleeping, 0 stopped, 0 zombie
其中:
Tasks: 127 total:表示当前有127个进程。
1 running:表示正在运行的进程数。
126 sleeping:表示正在休眠的进程数。
0 stopped:表示停止的进程数。
0 zombie:表示僵尸进程数。
进程的状态可以用以下字母来表示:
D:不可中断的睡眠状态(uninterruptible sleep),通常是在等待IO操作。
R:运行状态(running or runnable),即在CPU上运行或在运行队列中等待运行。
S:可中断的睡眠状态(interruptible sleep),通常是在等待某些事件发生。
T:停止状态(stopped or traced),通常是因为收到信号而停止运行。
Z:僵尸状态(zombie),通常是子进程退出后,父进程还没有回收资源。
3.1.3 第三行
第三行包括以下内容:
%Cpu(s): 0.3 us, 0.7 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
其中:
%Cpu(s):表示所有CPU的使用情况,如果有多个CPU,可以按数字键1来切换显示每个CPU的使用情况。
us:表示用户空间占用CPU的百分比,即用户态进程消耗的CPU时间百分比。用户态进程包括shell程序、各种应用程序、web服务器和各种桌面应用等。
sy:表示内核空间占用CPU的百分比,即内核态进程消耗的CPU时间百分比。内核态进程包括系统调用、中断处理、内核线程等。
ni:表示用户进程空间内改变过优先级的进程占用CPU的百分比,即nice值不为0的进程消耗的CPU时间百分比。nice值可以调整进程用户态的优先级,负值表示高优先级,正值表示低优先级。
id:表示空闲CPU百分比,即没有分配给任何进程的CPU时间百分比。
wa:表示等待输入输出的CPU时间百分比,即因为IO操作而阻塞的CPU时间百分比。如果这个值过高,可能说明存在IO瓶颈问题。
hi:表示硬中断(hardware IRQ)占用CPU的百分比,即处理硬件设备发送给CPU的中断请求所消耗的CPU时间百分比。硬件设备包括硬盘、网卡、键盘、鼠标等。
si:表示软中断(software IRQ)占用CPU的百分比,即处理软件发送给CPU的中断请求所消耗的CPU时间百分比。
st:表示虚拟机占用的CPU时间百分比,即被虚拟机管理程序(hypervisor)偷走的CPU时间百分比。如果这个值过高,可能说明存在虚拟化问题。
3.1.4 第四行
第四行包括以下内容:
KiB Mem : 1016332 total, 133056 free, 203716 used, 679560 buff/cache
其中:
KiB Mem:表示物理内存的使用情况,单位为KB。
total:表示物理内存的总量。
free:表示物理内存的空闲量。
used:表示物理内存的已用量。
buff/cache:表示物理内存的缓冲区和缓存量。
缓冲区(buffer)是用于存放输入输出数据的临时区域,通常是由系统内核管理的。缓存(cache)是用于存放频繁访问的数据的临时区域,通常是由应用程序管理的。缓冲区和缓存可以提高系统的性能,因为它们可以减少对硬盘等慢速设备的访问。当系统需要更多的内存时,缓冲区和缓存可以被回收。
3.1.5 第五行
第五行包括以下内容:
KiB Swap: 1048572 total, 1048572 free, 0 used. 604532 avail Mem
其中:
KiB Swap:表示交换区(swap)的使用情况,单位为KB。交换区是一种扩展物理内存的方法,它可以将一部分硬盘空间作为虚拟内存使用。
total:表示交换区的总量。
free:表示交换区的空闲量。
used:表示交换区的已用量。
avail Mem:表示可用内存的数量,即空闲内存加上可回收的缓冲区和缓存。
3.2 进程统计信息
从第八行开始,每一行显示一个进程的相关信息。每一列代表一个字段,可以按f键来选择要显示或隐藏哪些字段。以下是一些常见字段的说明:
字段含义
PID进程ID
USER进程所有者
PR进程优先级
NI进程nice值
VIRT进程使用的虚拟内存总量
字段含义
RES进程使用的物理内存总量
SHR进程使用的共享内存总量
S进程状态
%CPU进程占用CPU的百分比
%MEM进程占用内存的百分比
TIME+进程运行时间
COMMAND进程命令
4. top命令的功能交互操作
top命令不仅可以显示系统和进程的信息,还可以对进程进行一些操作,例如终止、重设优先级、过滤、搜索等。以下是一些常用功能交互操作的说明:
4.1 终止进程
如果要终止一个进程,可以按k键,然后输入进程ID和信号代码。信号代码是一个数字,代表发送给进程的信号类型。常见的信号代码有以下几种:
信号代码含义
1SIGHUP,挂起信号,通常用于重启进程或重新加载配置文件
2SIGINT,中断信号,通常用于终止进程
3SIGQUIT,退出信号,通常用于终止进程并生成核心转储文件(core dump)
9SIGKILL,强制终止信号,通常用于无法正常终止的进程
15SIGTERM,终止信号,通常用于正常终止进程
19SIGSTOP,停止信号,通常用于暂停进程
20SIGCONT,继续信号,通常用于恢复进程
例如,如果要强制终止PID为1234的进程,可以按k键,然后输入1234和9。
4.2 重设优先级
ssh命令行如果要重设一个进程的优先级(nice值),可以按r键,然后输入进程ID和新的nice值。nice值是一个-20到19的整数,负值表示高优先级,正值表示低优先级。只有超级用户才能设置负值的nice值。
例如,如果要提高PID为1234的进程的优先级,可以按r键,然后输入1234和-10。
4.3 过滤进程
如果要过滤显示某些进程,可以按o键,然后输入过滤条件。过滤条件是一个字段名和一个值的组合,可以使用以下符号来表示关系:
符号含义
=等于
!=不等于
<;小于
>大于
例如,如果要过滤显示USER为root的进程,可以按o键,然后输入USER=root。
4.4 搜索进程
如果要搜索某些进程,可以按L键,然后输入搜索关键字。搜索关键字可以是任意字符串,会在COMMAND字段中进行匹配。匹配到的进程会被高亮显示。
例如,如果要搜索包含ssh的进程,可以按L键,然后输入ssh。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论