文章目录
- 简介
- 常用命令
- /proc/meminfo(内存)
- free(内存信息)
- top(进程动态)
- df (磁盘信息)
- du(磁盘信息)
- ps(进程状态)
- vmstat(内存统计)
- netstat(网络状态)
- iostat(磁盘IO)
简介
日常开发中,我们的应用都是在linux环境上运行,环境在运行中可能会出现各种状况,比如
- 日志没有定时清理导致磁盘爆满
- 线程池嵌套使用导致线程等待
- 无限制的数据计算导致cpu飙高
- 数据加载过多进入内存导致内存爆满
当出现上述各种情况等,我们需要通过linux监控命令对环境状态进行问题排查,本文主要总结几个日常使用频繁的监控命令
常用命令
/proc/meminfo(内存)
/proc/meminfo 是一个报告可用和已用内存量的虚拟文件,它包含有关系统内存使用情况以及内核使用的缓冲区和共享内存的实时信息。进程的内存使用信息也可以通过 /proc/[pid]/statm 和 /proc/[pid]/status 来查看。
cat /proc/meminfo
free(内存信息)
free命令可以帮助你深入了解系统内存(RAM)的使用情况等,它是对 /proc/meminfo 收集到的信息的一个概述
free [选项]
命令选项介绍:
选项 | 描述 |
---|---|
-h | 通过调整 KB、GB 等数据单位,以人类可读的形式打印信息 |
-s | 在给定的时间间隔参数后更新 free 输出 |
-t | 显示系统和交换内存的总量 |
-g | 以 GB 为单位显示数据 |
-m | 以 MB 为单位打印信息 |
-k | 以 KB 为单位显示输出 |
输出数据描述:
参数 | 描述 |
---|---|
total | 表示安装内存 |
used | 显示系统已使用的存储空间 (used= total – free – buff/cache) |
free | 可用于新进程的可用内存量(free= total – used – buff/cache) |
shared | tmpfs(临时文件系统)使用的内存量 |
buff/cache | 表示缓冲区和缓存使用的内存总和 (Buffers + Cache) |
available | 它估计有多少内存可用于启动新应用而无需交换。它是free 内存和可以立即使用的 buff/cache 的一部分的总和 |
top(进程动态)
top命令用于实时显示进程动态的工具,可以显示系统中各个进程的资源占用情况,如CPU使用率、内存使用率等。
top [选项]
命令选项介绍:
选项 | 描述 |
---|---|
-b | 批处理 |
-c | 显示完整的治命令 |
-s | 保密模式 |
-S | 累积模式 |
-i<时间> | 设置间隔时间 |
-p<进程号> | 指定进程 |
-n<次数> | 循环显示的次数 |
输出数据描述:
参数 | 描述 |
---|---|
第一行 | 表示当前系统时间、有两个用户登录,load average: 0.00, 0.01, 0.05 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况 |
第二行 | 描述任务(进程)情况,系统现在共有289个进程,其中处于运行中的有1个,288个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。 |
第三行 | 表示cpu状态信息 0.2%us — 用户空间占用CPU的百分比。 0.2%us — 用户空间占用CPU的百分比。 0.2% sy — 内核空间占用CPU的百分比。 0.0% ni — 改变过优先级的进程占用CPU的百分比 99.6% id — 空闲CPU百分比 0.0% wa — IO等待占用CPU的百分比 0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比 0.0% si — 软中断(Software Interrupts)占用CPU的百分比 |
第四行 | 表示当前系统时间、有两个用户登录,load average: 0.00, 0.01, 0.05 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况 |
第五行 | 表示内存状态信息 32761424k total — 物理内存总量 2411932k used — 使用中的内存总量 20718732k free — 空闲内存总量 9630760k buffers — 缓存的内存量 |
PID | 进程id |
USER | 进程所有者 |
PR | 进程优先级 |
NI | nice值。负值表示高优先级,正值表示低优先级 |
VIRT | 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES |
RES | 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA |
SHR | 共享内存大小,单位kb |
S | 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程 |
%CPU | 上次更新到现在的CPU时间占用百分比 |
%MEM | 进程使用的物理内存百分比 |
TIME+ | 进程使用的CPU时间总计,单位1/100秒 |
COMMAND | 进程名称(命令名/命令行) |
df (磁盘信息)
df命令可以快速获取 磁盘 被占用了多少空间,目前还剩下多少空间等信息
df [选项]
du(磁盘信息)
du命令可以统计 目录(或文件)所占磁盘空间的大小
ps(进程状态)
ps命令用于查看当前运行的进程状态的命令
ps [选项]
命令选项介绍:
选项 | 描述 |
---|---|
-e | 显示所有进程 |
-f | 使用全格式显示进程信息 |
-l | 显示长格式的进程信息 |
-u | 显示与指定用户相关的进程信息 |
-p | 显示指定进程ID的进程信息 |
-o | 自定义输出格式 |
vmstat(内存统计)
vmstat 命令显示实时的和平均的统计,覆盖 CPU、内存、I/O 等内容。例如内存情况,不仅显示物理内存,也统计虚拟内存。
输出数据描述:
参数 | 描述 |
---|---|
r | 运行队列进程个数 |
b | 在等待IO的进程数 |
swpd | 已经使用的交换内存(kb) |
free | 空闲的物理内存(kb) |
buff | 用作缓冲区的内存数(kb) |
cache | 用作高速缓存的内存数(kb) |
si | 每秒交换分区写入内存量 |
so | 每秒内存写交换分区的量 |
bi | 每秒从块设备读取的块数量 |
bo | 每秒写入块设备的块数量 |
wa | 等待io 所消耗的cpu 时间 |
st | 用于虚拟机,如果你的机器是虚拟化设备,虚拟 CPU 等待实际 CPU 的时间的百分比 |
netstat(网络状态)
netstat 网络连接状态查看命令,可以查看的网络中的传输层(TCP、UDP)信息,日常可以查看某个端口是否开放
netstat [选项]
命令选项介绍:
选项 | 描述 |
---|---|
-a | (all)显示所有选项,默认不显示LISTEN相关 |
-t | (tcp)仅显示tcp相关选项 |
-u | (udp)仅显示udp相关选项 |
-n | 拒绝显示别名,能显示数字的全部转化成数字 |
-l | 仅列出有在 Listen (监听) 的服務状态 |
-p | 显示建立相关链接的程序名 |
-r | 显示路由信息,路由表 |
-e | 显示扩展信息,例如uid等 |
-s | 按各个协议进行统计 |
-c | 每隔一个固定时间,执行该netstat命令 |
输出数据描述:
参数 | 描述 |
---|---|
Proto | 协议类型,如 TCP 或 UDP |
Recv-Q | 接收队列的长度,即等待进程读取的数据量 |
Send-Q | 发送队列的长度,即等待网络传输的数据量 |
Local Address | 本地IP地址和端口号 |
Foreign Address | 连接的远程IP地址和端口号 |
State | 连接的状态,如 ESTABLISHED、TIME_WAIT 等(包含TCP三次和四次挥手过程中的状态) |
iostat(磁盘IO)
iostat 命令(即:I/O statistics)是用来对系统的磁盘操作进行监视
iostat [选项]
命令选项介绍:
选项 | 描述 |
---|---|
-c | 显示CPU的使用情况 |
-d | 显示磁盘的使用情况 |
-k | 以KB为单位显示 |
-m | 以MB为单位显示 |
-x | 显示详细信息 |
-t | 显示终端和CPU的信息 |
输出数据描述:
参数 | 描述 |
---|---|
%user | 表示处在用户模式下的CPU时间百分比 |
%nice | 表示处在带nice值的用户模式下的CPU时间百分比 |
%system | 表示处在系统模式下的 |
%iowait | 表示CPU等待输入输出完成的时间百分比 |
%steal | 表示虚拟CPU的无意识等待时间百分比 |
%idle | CPU空闲时间百分比 |
tps | 设备每秒的传输次数 |
kB_read/s | 每秒从设备读取的数据量 |
kB_wrtn/s | 每秒向设备写入的数据量 |
kB_read | 读取的总数据量 |
kB_wrtn | 写入的总数据量 |
❤️如果 %iowait 的值过高,表示硬盘存在 I/O 瓶颈,%idle 值高,表示 CPU 较空闲,如果 %idle值 高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量。%idle 值如果持续低于 10,那么系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU