Linux Top命令详解

fun. 逗~ 2024-09-12 15:07:02 阅读 60

文章目录

第一行:系统相关top - 09:17:06:up 100 days, 23:52:1 user:load average: 4.19, 3.92, 3.87:负载平均值解释

第二行:进程相关Tasks: 118 total:1 running:117 sleeping:0 stopped:0 zombie:进程状态解释

第三行:CPU相关第四行:内存相关KiB Mem2046504 total71832 free1738416 used236256 buff/cache

第五行:SWAP交换分区信息KiB Swap4194296 total1225736 free2968560 used145032 avail Mem

进程的状态监控其它:Linux查看物理CPU个数、核数;逻辑CPU个数1 查看物理CPU个数2 查看每个物理CPU的核心数3 查看逻辑CPU的个数4 查看CPU型号4 查看内存信息

在linux中执行top命令,会出现以下结果:

<code>top - 09:17:06 up 100 days, 23:52, 1 user, load average: 4.19, 3.92, 3.87

Tasks: 118 total, 1 running, 117 sleeping, 0 stopped, 0 zombie

%Cpu(s): 66.7 us, 12.1 sy, 0.0 ni, 15.2 id, 3.0 wa, 0.0 hi, 3.0 si, 0.0 st

KiB Mem : 2046504 total, 71832 free, 1738416 used, 236256 buff/cache

KiB Swap: 4194296 total, 1225736 free, 2968560 used. 145032 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

14518 root 20 0 32100 9768 936 S 75.0 0.5 45146:00 tmux

31132 user-es 20 0 2997316 303160 2280 S 62.5 14.8 40716:04 java

22719 root 20 0 757596 9992 2536 S 12.5 0.5 739:11.09 barad_agent

15842 root 20 0 3265188 366808 3920 S 6.2 17.9 287:06.20 java

1 root 20 0 43736 3364 2072 S 0.0 0.2 11:01.81 systemd

2 root 20 0 0 0 0 S 0.0 0.0 0:02.16 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 19:46.38 ksoftirqd/0

7 root rt 0 0 0 0 S 0.0 0.0 6:52.95 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 246:09.99 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:32.43 watchdog/0

12 root rt 0 0 0 0 S 0.0 0.0 0:29.58 watchdog/1

13 root rt 0 0 0 0 S 0.0 0.0 6:48.22 migration/1

第一行:系统相关

top - 09:17:06 up 100 days, 23:52, 1 user, load average: 4.19, 3.92, 3.87

top - 09:17:06:

top 表示运行的是 top 命令。

09:17:06 是当前的系统时间。

up 100 days, 23:52:

up 100 days, 23:52 表示系统已经连续运行了 100 天 23 小时 52 分钟(即系统没有重启过的时间)。

1 user:

1 user 表示当前有 1 个用户登录到系统。

load average: 4.19, 3.92, 3.87:

load average 后面的三个数字表示系统的平均负载,分别是最近 1 分钟、5 分钟和 15 分钟的负载平均值。

负载平均值是一个反映系统活动程度的指标,它表示在给定时间段内运行队列中的进程数量。这些值通常用于评估系统性能和检测是否存在性能瓶颈。

4.19:最近 1 分钟的平均负载。

3.92:最近 5 分钟的平均负载。

3.87:最近 15 分钟的平均负载。

负载平均值解释

负载平均值表示系统运行队列中的任务数,通常与 CPU 核心数对比来评估系统负载情况:

如果负载平均值低于 CPU 核心数,系统负载较轻,性能良好。

如果负载平均值接近或超过 CPU 核心数,系统负载较重,可能存在性能瓶颈。

例如,如果系统有 4 个 CPU 核心:

load average: 4.19, 3.92, 3.87 表示最近一段时间内系统负载较高,接近或超过了 4 个核心的处理能力,可能需要关注系统性能或优化任务调度。

第二行:进程相关

Tasks: 118 total, 1 running, 117 sleeping, 0 stopped, 0 zombie

Tasks: 118 total:

系统当前总共有 118 个任务(进程)。

1 running:

其中有 1 个任务正在运行。

117 sleeping:

117 个任务处于睡眠状态(等待资源或时间片)。

0 stopped:

0 个任务被停止(暂停执行)。

0 zombie:

0 个任务处于僵尸状态(已经终止但尚未被父进程收集)。

进程状态解释

running(运行):

当前正在使用 CPU 执行的任务。

sleeping(睡眠):

任务处于等待状态,通常是等待 I/O 操作完成或等待某个资源。

睡眠状态分为两种:

可中断睡眠(Interruptible Sleep):任务可以被信号唤醒。

不可中断睡眠(Uninterruptible Sleep):任务不会响应信号,通常是等待硬件操作完成。

stopped(停止):

任务被暂停执行,通常是由于收到 SIGSTOP 信号,可以通过 SIGCONT 信号恢复执行。

zombie(僵尸):

任务已经终止,但其退出状态尚未被父进程读取,因此仍然占据进程表的一个条目。

第三行:CPU相关

%Cpu(s): 66.7 us, 12.1 sy, 0.0 ni, 15.2 id, 3.0 wa, 0.0 hi, 3.0 si, 0.0

us (user):用户空间的 CPU 使用百分比。sy (system):内核空间的 CPU 使用百分比。ni (nice):带有调整优先级的用户进程的 CPU 使用百分比。id (idle):空闲 CPU 时间的百分比。wa (iowait):等待 I/O 操作完成的 CPU 时间百分比。hi (hardware interrupt):硬件中断处理的 CPU 时间百分比。si (software interrupt):软件中断处理的 CPU 时间百分比。st (steal time):虚拟机运行其他 hypervisor 上客户机的时间百分比。

第四行:内存相关

KiB Mem : 2046504 total, 71832 free, 1738416 used, 236256 buff/cache

KiB Mem

这是指内存的总量,使用的单位是KiB(Kibibytes),其中1 KiB = 1024 Bytes。

2046504 total

系统的总内存量为2046504 KiB,约为2 GB。

71832 free

当前系统中空闲的内存量为71832 KiB,大约为70 MB。这部分内存是还没有被使用的,可供新的应用程序或现有程序扩展使用。

1738416 used

已经被使用的内存量为1738416 KiB,约为1.7 GB。这包括所有当前运行的程序和进程所占用的内存。

236256 buff/cache

被用作缓冲和缓存的内存量为236256 KiB,约为230 MB。操作系统会使用这部分内存来存储临时数据,以加快文件访问速度和响应速度。

第五行:SWAP交换分区信息

KiB Swap: 4194296 total, 1225736 free, 2968560 used. 145032 avail Mem

KiB Swap

表示系统配置的交换空间总量,使用的单位同样是KiB(Kibibytes)。交换空间是硬盘上的一个特定区域,当物理内存不足时,系统会使用它作为虚拟内存。

4194296 total

交换空间的总量为4194296 KiB,约为4 GB。这个大小表明系统管理员可能预见到需要处理较多或较大的应用程序,因此配置了相对较大的交换空间。

1225736 free

当前未使用的交换空间为1225736 KiB,约为1.2 GB。这表示尽管部分交换空间已经在使用中,但还有相当一部分是空闲的。

2968560 used

已经使用的交换空间为2968560 KiB,约为3 GB。这个数字较高,表明物理内存的需求超过了实际可用的物理内存,系统不得不依赖交换空间来满足内存需求,这通常会影响系统性能,因为交换空间的读写速度远不及物理内存。

145032 avail Mem

可用内存为145032 KiB,约为142 MB。这是系统当前可以立即使用的内存量,考虑到物理内存和缓冲/缓存的使用情况,这个数字相当低,可能导致系统在处理某些内存密集型操作时表现不佳。

进程的状态监控

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

这段输出显示的是 top 命令中进程信息的列标题,每个字段具体含义如下:

PID:Process ID(进程标识符)。这是系统分配给每个进程的唯一数字标识。通过PID,你可以特定地操作或监控该进程。

USER:运行该进程的用户名称。这显示了哪个用户启动了该进程,有助于了解系统资源的使用情况和权限管理。

PR:Priority(优先级)。这代表了进程的调度优先级。数值越小,优先级越高。

NI:Nice value。这是一个从-20到19的值,用于调整进程的优先级。负值表示高优先级,正值表示低优先级。

VIRT:Virtual Memory(虚拟内存使用量)。表示该进程总共使用的虚拟内存量,包括所有代码、数据和共享库加上交换空间的使用量。

RES:Resident Size(常驻内存大小)。这是该进程当前占用的物理内存的大小,不包括交换出去的内存部分。

SHR:Shared Memory(共享内存)。表示该进程与其他进程共享的内存量。

S:Process Status(进程状态)。常见的状态有:

R (running): 正在运行或在运行队列中等待。S (sleeping): 处于睡眠状态,等待某个事件或定时器。D (disk sleep): 不可中断的睡眠状态,通常是在等待IO操作。Z (zombie): 已完成执行但尚未由其父进程清理的“僵尸”状态。T (stopped): 被任务控制或因调试而停止的进程。

%CPU:CPU使用率。显示该进程占用的CPU时间百分比。

%MEM:内存使用率。显示该进程使用的物理内存与总物理内存的百分比。

TIME+:该进程自启动以来占用的总CPU时间,通常以分钟:秒的形式表示。

COMMAND:启动该进程的命令名称或命令行。

这些字段提供了关于系统上每个进程的详细信息,有助于系统管理员监控和优化系统性能。

其它:Linux查看物理CPU个数、核数;逻辑CPU个数

1 查看物理CPU个数

cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l

这段命令是用于在Linux系统中查询CPU的物理数量。每一部分都有其特定功能,组合在一起形成一个有用的工具链。下面是命令的详细解释和逻辑:

cat /proc/cpuinfo:这个命令用于显示 /proc/cpuinfo 文件的内容。这个文件包含了当前系统中CPU的详细信息,如型号、核心数、速度等。/proc 是一个虚拟文件系统,提供了内核及进程的运行时系统信息。

grep "physical id"grep 命令用于搜索文本,并输出包含指定模式的行。这里,它被用来从 /proc/cpuinfo 的输出中查找所有包含 “physical id” 的行。每个CPU物理核心在系统中都有一个唯一的 “physical id”,如果CPU支持超线程(Hyper-Threading),则具有相同“physical id”的逻辑处理器比实际物理核心更多。

sort:这个命令将从 grep 命令接收的文本行进行排序。由于可能存在多个逻辑处理器共享相同的物理ID,所以这一步确保所有相同的物理ID都排在一起,方便下一步的去重操作。

uniquniq 命令用来过滤掉排序后重复的行,因此它只保留唯一的行。这样,每个唯一的 “physical id” 只会被计算一次。

wc -l:最后,这个命令计算行数。wc 是 “word count”的缩写,而 -l 参数告诉它只计算行数。这个数字表示系统中物理CPU的数量。

总的来说,这条命令链通过列出所有独特的CPU物理ID来计算物理CPU的数量,是一种检测服务器或工作站处理能力的快速方法。如果是多核心或者多CPU的系统,这个命令可以帮助理解系统的硬件组成。

2 查看每个物理CPU的核心数

cat /proc/cpuinfo | grep "cpu cores" | uniq

命令与前面差不多,这里就不过多解释。

3 查看逻辑CPU的个数

cat /proc/cpuinfo | grep "processor" | wc -l

4 查看CPU型号

cat /proc/cpuinfo | grep "name"| cut -f2 -d: | uniq -c

这条命令用于查询Linux系统中CPU的型号名称,并计算每种型号的数量。让我们逐步解析这个命令的每个部分:

cat /proc/cpuinfo:这个命令输出 /proc/cpuinfo 文件的内容,该文件包含了关于系统CPU的详细信息。如前所述,/proc 是一个虚拟文件系统,提供关于系统运行状态的信息。

grep "name":使用 grep 命令从 /proc/cpuinfo 的输出中筛选出包含 “name” 的行。这些行包含了CPU的型号名称,通常标记为 model name

cut -f2 -d:cut 命令用于分割字符串。这里,-f2 指定选择分割后的第二字段,-d: 则设置分隔符为冒号 :。这意味着,从 grep 输出的每一行中,我们只获取冒号后面的部分,也就是CPU型号名称。

uniq -cuniq 命令用来过滤相邻重复行,并通过 -c 选项来计算每种行出现的次数。在这里,它统计每种CPU型号名称出现的次数。由于 uniq 只能过滤排序后的相邻重复行,但在这种情况下由于输出本来就是重复的型号名称,所以直接应用 uniq -c 依然有效。

综合来看,这条命令链的作用是列出系统中各种CPU型号的名称,并统计每种型号出现的次数,从而提供关于系统中具体使用了哪些CPU及其数量的快速概览。如果系统包含多个相同型号的CPU(例如在多核或多CPU配置中),这个命令可以清晰地显示每个型号的计数,帮助理解系统的具体硬件配置。

4 查看内存信息

cat /proc/meminfo



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。