Linux运维常用命令-TOP详解

Linux运维常用命令-TOP

一、top命令监控视图主要信息
Linux运维常用命令-TOP详解_第1张图片
我们结合上图分析讲解top命令展示信息

第一行
10:18:13 -当前系统时间
up 173 days, 12:24 -系统已运行173天12小时24分钟(没有重启)
6 users -当前有6个用户登陆系统
load average: 6.13, 5.98, 5.91 -此处三个数值表示1分钟、5分钟、15分钟的负载均衡情况。

注:load average 数据是每隔5秒钟检查一次活跃的进程数,然后按照特定算法计算出数值。如果数值除以CPU的数量,结果高于5的时候就表明系统在超负荷运转。

第二行:进程状态
Tasks: 634 total -一共634个进程
1 running -有一个正在运行
633 sleeping -633个在休眠
0 stopped -暂停的0个
0 zombie -处于僵尸状态的有0个

第三行:CPU状态
Cpu(s): 单位为S-秒
21.2%us -用户空间占用CPU的时间百分比
5.9%sy -内核空间占用CPU的时间百分比
0.0%ni -nice 改变过优先级的进程占用CPU的时间百分比, 71.9%id -空闲CPU百分比
0.6%wa -IO进程等待占用CPU的时间百分比
0.0%hi -硬中断占用CPU的时间百分比
0.4%si -软中断占用CPU的时间百分比
0.0%st - 针对虚拟化主机的,st意为该主机被hypervisor-虚拟机监视器偷走的CPU时间。

第四行:内存状态
Mem: 98942264k total -物理内存总量(98G)
97705252k used -使用中的内存总量(97G)
1237012k free -空闲内存总量(1G)
462840k buffers -缓存占用内存量(462M)

第五行:swap交换分区
Swap:
33554424k total -物理内存总量(33G)
17754316k used -使用中的内存总量(17G)
15800108k free -空闲内存总量(15G)
18117132k cached -缓存占用内存量(18G)

注:Linux内存不同于Windows内存概念,在Windows中,内存空闲量462M,理论上已经超负荷了,但是Linux的内存管理与其不同,一下简单介绍Linux内存概念逻辑,有兴趣的朋友可以找资源深入学习。
第四行的内存状态中used 指的是处于系统内核控制中的内存,free 指的是未被内核控制的内存容量。
被内核控制管理的内存不一定都在使用中,还可能用于缓存等中间层

#因为CPU和内存的读写速度差异过大,为了提升系统运行速度及效率,缓存主要作用就是存储一些经常被CPU使用的数据,以便下次CPU有需要时可以快速从缓存中拿取数据。
实际上内核并不会这些可以被重新利用的内存(缓存)还给free,所以Linux服务器中free容量会越来越少,但不必为此担心

真实可用内存=free + buffer + cached
真实已用内存=used - buffer - cached

对于内存监控,在top中我们要注意的其实是观察第五行swap交换分区的used,如果这个数值在不断变化,说明内存真的紧张了,系统正在不断的进行内存和swap的数据交换。慢慢的将进程消耗分摊到swap分区。

第六行是空行
主要用于显示用户在top显示界面执行的命令的结果,下面会介绍部分简单命令操作,例如在top界面中按H会显示线程,第六行会显示一秒钟:show threads on
Linux运维常用命令-TOP详解_第2张图片

第七行:进程(任务)信息监控
PID -进程ID
USER -进程所有者
PR -进程优先级
NI -nice值,负值表示高优先级,正值表示低优先级
VIRT -进程使用的虚拟内存总量,单位kb
RES -进程使用的。未被换出的物理内存
SHR -共享内存
S -进程状态,D=不可中断的睡眠状态, R=运行, S=睡眠,T=跟踪/停止 Z=僵尸进程
%CPU -上次使用到现在的CPU占用时间百分比
注:%CPU显示的是进程占用一个核的百分比,而不是整个CPU(内核)的百分比,有时候可能会大于100。这是因为该进程启用了多线程占用了多核心!

%MEM -进程使用的物理内存百分比
TIME+ 进程占用时间总和,1/100s
COMMAND -命令名

二、交互命令
按h会显示帮助页面,如下图所示
Linux运维常用命令-TOP详解_第3张图片
Z:改变字体颜色;
B:加粗;
1:监控每个逻辑CPU的状况;
u:用户,显示该用户的任务、进程;
i:忽略闲置和僵死的进程
s:设置刷新时间(默认是3s)
M:按照内存占用排序显示
H:显示线程;
P:根据CPU使用百分比大小进行排序。

三、常用参数组合
1、监控某进程的状态

top -p PID

2、显示某个进程的所有线程消耗情况

top -H -p pid

四、补充说明:
top命令是Linux上进行综合系统监控的首选命令,但有些时候却达不到我们的要求。例如top命令监控的最小单位是进程,所以我们看不到具体的线程数和客户连接数量,而这两个指标是java和web运维过程中非常重要的指标。通常我们会使用ps和netstat来补充top的信息不足。

监控Java的线程数:

ps -elf | grep java | wc -l

监控网络客户连接数:

netstat -n | grep tcp | grep "port"| wc -l

你可能感兴趣的:(Linux,linux)