技术文章 > Linux > 资源使用情况查看 

Linux 资源使用情况查看

Linux 系统中查看资源占用状况、观察系统性能指标的 10 个指令: top    ps   free   df   du   sar   vmstat   iostat   netstat   ifconfig   tcpdump

1. top 命令:

top 查看系统进程和资源使用情况,格式:
top [-] [d delay] [q] [c] [S] [s] [i] [n]
主要参数: 查询结果列说明: top命令使用过程中,还可以使用一些交互的命令来完成其它参数的功能。这些命令是通过快捷键启动的: 回顶部

2. ps 命令:查看当前进程

ps 命令可以显示系统中所有进程的详细信息,包括进程名、进程 ID、运行时间和 CPU 占用率等。常用的参数包括 -aux 和 grep,后者可用于查找某个进程以及它的进程 ID。
该命令语法格式如下:
ps [options]
options 选项说明: 以全格式显示当前所有的进程:
ps -ef
或:
ps aux
回顶部

3. free 命令:查看内存使用情况

运行 free -m 命令可以查看系统内存的使用情况,包括总内存、已用内存、剩余内存和缓存的内存等。使用-s参数可以设置刷新时间间隔,以便实时监控内存使用情况。格式:
free [-b|-k|-m|-g] [-o] [-s delay] [-t] [-V]
主要参数: 回顶部

4. df、du 命令:查看磁盘空闲、使用空间

df
    df 命令显示硬盘被占用了多少空间,目前还剩下多少空间等信息,它也可以显示所有文件系统对i节点和磁盘块的使用情况。
    df命令格式:
df [options]
options 选项说明:
du
    du 的英文原义为“disk usage”,含义为显示磁盘空间的使用情况,统计目录(或文件)所占磁盘空间的大小。该命令的功能是逐级进入指定目录的每一个子目录并显示该目录占用文件系统数据块(1024字节)的情况。若没有给出指定目录,则对当前目录进行统计。
    df命令格式:
du [path] [options]
options 选项说明:
df 和 du 输出结果差别
    文件系统分配其中的一些磁盘块用来记录它自身的一些数据,如i节点,磁盘分布图,间接块,超级块等。这些数据对大多数用户级的程序来说是不可见的,通常称为 Meta Data。
    du 命令是用户级的程序,它不考虑 Meta Data。df 命令则查看文件系统的磁盘分配图并考虑 Meta Data。因此正常情况下,df 计算的 USED 空间会比 du 计算的结果要稍大。
    异常情况下,df 计算的 user 空间会比 du 大很多,原因在于 du 是以文件名、目录名为依据计算空间使用的,而 df 是以硬盘块使用情况来计算空间使用的。

回顶部

5. sar 命令:查看系统资源使用情况的历史记录

sar 命令可以全面地获取系统的 CPU、运行队列、磁盘读写(I/O)、分区(交换区)、内存、CPU 中断和网络等性能数据。命令格式:
sar [options] [-A] [-o file] [t n]
在命令行中,n 和t 两个参数组合起来定义采样间隔和次数,t为采样间隔,n为采样次数,是可选的,默认值是每小时1次。-o file 表示将命令结果以二进制格式存放在文件中,file 在此处不是关键字,是文件名。options 为命令行选项。
options 常用选项说明: 回顶部

6. vmstat 命令:查看系统资源使用情况

vmstat(VirtualMeomoryStatistics,虚拟内存统计)可对操作系统的虚拟内存、进程、CPU 等的整体情况进行监视。

6.1 命令

命令格式:
vmstat [options] [delay [count]]
options 常用选项说明: 输出字段说明:
类别 项目 含义 说明
Procs(进程) r 等待执行的任务数 展示了正在执行和等待 cpu 资源的任务个数。当这个值超过了 cpu 个数,就会出现 cpu 瓶颈。
B 等待 IO 的进程数量
Memory(内存) swpd 正在使用虚拟的内存大小,单位k swpd 交换区实为硬盘内所开
free 空闲内存大小
buff 已用的 buff 大小,对块设备的读写进行缓冲
cache 已用的 cache 大小,文件系统的 cache
inact 非活跃内存大小,即被标明可回收的内存,区别于 free 和 active 具体含义见:概念补充(当使用 -a 选项时显示)
active 活跃的内存大小 具体含义见:概念补充(当使用 -a 选项时显示)
Swap si 每秒从交换区写入内存的大小(单位:kb/s)
so 每秒从内存写到交换区的大小
IO bi 每秒读取的块数(读磁盘) 现在的 Linux 版本块的大小为 1024 bytes
bo 每秒写入的块数(写磁盘)
system in 每秒中断数,包括时钟中断 这两个值越大,会看到由内核消耗的 cpu 时间会越多
cs 每秒上下文切换数
CPU(以百分比表示) Us 用户进程执行消耗 cpu 时间(user time) us 的值比较高时,说明用户进程消耗的 cpu 时间多,但是如果长期超过 50% 的使用,那么我们就该考虑优化程序算法或其他措施了
Sy 系统进程消耗 cpu 时间(system time) sys 的值过高时,说明系统内核消耗的 cpu 资源多,这个不是良性的表现,我们应该检查原因。
Id 空闲时间(包括 IO 等待时间)
wa 等待 IO 时间 Wa过高时,说明 io 等待比较严重,这可能是由于磁盘大量随机访问造成的,也有可能是磁盘的带宽出现瓶颈。

6.2 判断方法

快速判断:
  内存: 如果 pi,po 长期不等于 0,表示内存不足;
  磁盘 IO: 如果 disk 经常不等于 0,且在 b 中的队列大于 3,表示 io 性能不好;
  CPU: 如果 r 经常大于 4,且 id 经常少于 40,表示 cpu 的负荷很重。
内存不足的表现:
  1.开始使用 swpd,swpd 不为0;
  2.si so 大于 0 开始从硬盘中读取;
磁盘 IO 瓶颈表现:
  1.读写 IO,bi bo 增多超过 2000;
  2.cpu 等待时间用于 IO 等待,wa 增加 超过 20;
  3.sy 系统调用时间长,IO 操作频繁会导致增加 >30%;
  4.wa io 等待时间长:
    iowait% <20% 良好
    iowait% <35% 一般
    iowait% >50%
  5.进一步使用 iostat 观察
CPU 理想的 load average:
  理想的 load average:核数 * CPU 数 * 0.7,超过这个值就说明已经是 CPU 瓶颈了
  CPU 个数:grep 'physical id' /proc/cpuinfo | sort -u
  核数:grep 'core id' /proc/cpuinfo | sort -u | wc -l

回顶部

7. iostat 命令:查看磁盘使用情况

iostat 全称为 I/O statistics,主要用于输出 磁盘IO 和 CPU 的统计信息。
命令格式:
iostat [选项] [<时间间隔>[<次数>]]
选项说明: 时间间隔和次数是可选参数,用于指定iostat命令的执行间隔和执行次数。

示例

1. iostat -c
输出 avg-cpu 描述的是 系统cpu使用情况:
字段说明
%userCPU 处在用户模式下的时间百分比
%niceCPU 处在带 NICE 值的用户模式下的时间百分比
%systemCPU 处在系统模式下的时间百分比
%iowaitCPU 等待输入输出完成时间的百分比
%steal管理程序维护另一个虚拟处理器时,虚拟 CPU 的无意识等待时间百分比
%idleCPU 空闲时间百分比
备注:
%iowait 的值过高,表示硬盘存在 I/O 瓶颈;
%idle 值高,表示 CPU 较空闲;
%idle 值高但系统响应慢时,可能是 CPU 等待分配内存,应加大内存容量;
%idle 值 持续低于 10%,表明 CPU 处理能力相对较低,系统中最需要解决的资源是 CPU。
2. iostat -d
输出 Device 项,描述的是 系统磁盘 使用情况:
字段说明
tps该设备每秒的传输次数,“一次传输”意思是“一次I/O请求”。多个逻辑请求可能会被合并为“一次I/O请求”,“一次传输”请求的大小是未知的
kB_read/s每秒从设备(drive expressed)读取的数据量
kB_wrtn/s 每秒向设备(drive expressed)写入的数据量
kB_read读取的总数据量
kB_wrtn写入的总数据量
3. iostat -d -x -k
输出 Device 项读写详细信息:
字段说明
rrqm/s每秒合并读操作的次数,如果两个读操作读取相邻的数据块时,可以被合并成一个,以提高效率。合并的操作通常是I/O scheduler(也叫elevator)负责的
wrqm/s每秒合并写操作的次数
r/s每秒读操作的次数
w/s每秒写操作的次数
rkB/s每秒读取的字节数(KB)
wkB/s每秒写入的字节数(KB)
avgrq-sz每个IO的平均扇区数,即所有请求的平均大小,以扇区(512字节)为单位
avgqu-sz平均未完成的IO请求数量,即平均意义上的请求队列长度
await平均每个IO所需要的时间,包括在队列等待的时间,也包括磁盘控制器处理本次请求的有效时间
r_await每个读操作平均所需要的时间,不仅包括硬盘设备读操作的时间,也包括在内核队列中的时间
w_await每个写操平均所需要的时间,不仅包括硬盘设备写操作的时间,也包括在队列中等待的时
svctm表面看是每个IO请求的服务时间,不包括等待时间,但是实际上,这个指标已经废弃。实际上,iostat工具没有任何一输出项表示的是硬盘设备平均每次IO的时间
%util表示该设备有I/O(即非空闲)的时间比率,不考虑I/O有多少,只考虑有没有
备注:
%util 表示该设备有i/o非空闲的时间比率,不考虑i/o有多少,由于硬盘设备有并行处理多个i/o请求的能力,所以%util即使达到100%也不意味着设备饱和了;
svctm 一般要小于await(因为同时等待的请求的等待时间被重复计算了),svctm的大小一般和磁盘性能有关,CPU/内存的负荷也会对其有影响,请求过多也会间接导致svctm的增加;
await 的大小一般取决于服务时间(svctm)以及I/O队列的长度和I/O请求的发出模式:
    svctm 比较接近 await,说明I/O几乎没有等待时间;
    await 远大于 svctm,说明I/O队列太长,应用得到的响应时间变慢,如果响应时间超过了用户可以容许的范围,这时可以考虑更换更快的磁盘,md调整内核elevator算法,优化应用,或者升级CPU。

回顶部

8. netstat 命令:查看网络接口使用情况和连接信息

netstat 是监控 TCP/IP 网络的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。
命令格式:
netstat [选项]
选项说明: 实例:
netstat -a      # 列出所有端口
netstat -at     # 列出所有TCP端口
netstat -au    # 列出所有UDP端口
netstat -ax    # 列出所有unix端口
netstat -atnlp    # 直接使用ip地址列出所有处理监听状态的TCP端口,且加上程序名
netstat -s     # 显示所有端口的统计信息
netstat -st    # 显示所有TCP的统计信息
netstat -su    # 显示所有UDP的统计信息
netstat -r     # 显示所有端口的统计信息
netstat -rn    # 显示所有TCP的统计信息

回顶部

9. ifconfig 命令:查看网络接口的IP地址和其他信息

ifconfig 命令用于配置和显示 Linux 内核中网络接口的网络参数。
ifconfig 命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。
命令格式:
ifconfig [-a] [-v] [-s] <interface>[[<AF>] <address>]
[add <address>[/<prefixlen>]]
[del <address>[/<prefixlen>]]
[[-]broadcast [<address>]] [[-]pointopoint [<address>]]
[netmask <address>] [dstaddr <address>] [tunnel <address>]
[outfill <NN>] [keepalive <NN>]
[hw <HW> <address>] [metric <NN>] [mtu <NN>]
[[-]trailers] [[-]arp] [[-]allmulti]
[multicast] [[-]promisc]
[mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <type>]
[txqueuelen <NN>]
[[-]dynamic]
[up|down]
参数说明:
参数说明
-a显示全部接口信息。
-s显示摘要信息(类似于 netstat -i)。
<interface> address为网卡设置IPv4地址。
<interface> add <address>给指定网卡配置IPv6地址。
<interface> del <address>删除指定网卡的IPv6地址。
<interface> netmask <address>设置网卡的子网掩码。掩码可以是有前缀0x的32位十六进制数,也可以是用点分开的4个十进制数。如果不打算将网络分成子网,可以不管这一选项;如果要使用子网,那么请记住,网络中每一个系统必须有相同子网掩码。
<interface> dstaddr <address>设定一个远端地址,建立点对点通信。
<interface> tunnel <address>建立隧道。
<interface> hw <address>设置硬件地址。
<interface> mtu <NN>设置最大传输单元。
<interface> [-]arp设置指定网卡是否支持ARP协议。-表示不支持arp。
<interface> multicast为网卡设置组播标志。
<interface> [-]promisc设置是否支持网卡的promiscuous模式,如果选择此参数,网卡将接收网络中发给它所有的数据包。-表示关闭混杂模式。
<interface> txqueuelen <NN>为网卡设置传输列队的长度。
<interface> up启动指定网卡。
<interface> down关闭指定网卡。该参数可以有效地阻止通过指定接口的IP信息流,如果想永久地关闭一个接口,我们还需要从核心路由表中将该接口的路由信息全部删除。
实例:
ifconfig #显示激活的网卡信息
ifconfig -a #显示所有的网卡信息
ifconfig -s #显示简要的网卡信息
ifconfig eth0 down #闭网卡
ifconfig eth0 up #启动网卡
ifconfig eth0 192.168.1.100 #配置ip地址
ifconfig eth0 192.168.1.100 netmask 255.255.255.0 #配置ip地址和子网掩码
ifconfig eth0 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255 #配置ip地址、子网掩码和广播地址

#单网卡添加多个IP地址
ifconfig eth0:0 192.168.1.100 netmask 255.255.255.0 up 
ifconfig eth0:1 192.168.2.100 netmask 255.255.255.0 up  

ifconfig eth0 del 192.168.1.100 # 删除IP地址
ifconfig eth0 arp #启用arp
ifconfig eth0 -arp #禁用arp
ifconfig eth0 mtu 1500 #设置最大传输单元

#配置和删除IPv6地址
ifconfig eth0 add 3ffe:3240:800:1005::2/64 
ifconfig eth0 del 3ffe:3240:800:1005::2/64

回顶部

10. tcpdump 命令:抓包分析网络数据

tcpdump 是 Linux 系统下的一款抓包命令集,工作原理是基于网卡抓取流动在网卡上的数据包。在 Linux 系统中由于 tcpdump 命令的简单和强大,我们一般直接使用 tcpdump 命令来抓取数据包。保存之后,拖下来在 wireshark 中分析。 命令格式:
tcpdump [-adeflnNOpqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面>][-r<数据包文件>][-s<数据包大小>][-tt][-T<数据包类型>][-vv][-w<数据包文件>][输出数据栏位]
参数说明: 实例:
tcpdump    #抓取通过第一个网卡的数据包,并将信息打印在屏幕上实时显示出来
tcpdump -i eth0  #抓取通过eth0网卡的数据包,信息实时打印在屏幕上。-i表示指定哪个网卡接口,后面跟网卡名字,比如eth0或者lo
tcpdump -i eth0 host 192.39.45.66  #抓取该网卡和该IP地址会话的数据包,实时打印在屏幕上,host后面跟IP地址或者域名,比如也可以写成host www.baidu.com
tcpdump -i eth0 src host 192.39.45.66  #抓取所有该网卡和该IP之间,收到的数据,src表示服务器收到的数据,如果该参数缺省,默认抓取所有数据
tcpdump -i eth0 dst host 192.39.45.66  #抓取所有该网卡和该IP之间,收到的数据,dst表示服务器发出去的数据,如果该参数缺省,默认抓取所有数据
tcpdump -n -i eth0 port 8080 and host 192.39.45.66    #查看8080端口号的会话数据包,port表示端口号,后面比如跟8080。-n表示不对具体ip地址做域名解析,直接显示会话两边的具体ip地址
tcpdump -c 10 -nn -i eth0 tcp dst port 8080 and host 192.39.45.66 -w /home/huidong/MyTest.pcap #保存在当前文件,pcap格式可被wireshark打开
最后,特别要注意,使用tcpdump命令的时候,建议加上 -c 命令,因为如果不加任何过滤的话,就会无限制的抓取数据包,直到磁盘存满为止,很可怕的,有些时候我们需要触发抓包的时候,可不用 -c,触发完之后停止抓包,就 OK 了。

回顶部

11. find 命令:查找体积、时间范围的文件

回顶部


来源:摘自 https://blog.csdn.net/vivlol918/article/details/131454141https://blog.csdn.net/shugyin/article/details/127434367https://blog.csdn.net/wangzhongshun/article/details/128027170https://blog.csdn.net/qq_42014600/article/details/90372315https://blog.csdn.net/qq_51574197/article/details/116171604等,本站 行痴 整理,2023-08-21