知识点051-判断linux系统状态命令汇总

你离开我真会死。 提交于 2019-11-30 18:00:55

系统状态信息查看

top (服务器进程,负载,cpu,内存情况)

参数 解析
load average: 1.15, 1.42, 1.44 1,5,15分钟负载情况,一般参数为cpu内核数的1-1.5倍以上应关注
1 running, 559 sleeping,   0 stopped,   0 zombie  正在运行、睡眠、停止、僵尸进程的数量,关注僵尸进程的数量
%sys 系统占用CPU百分比
id CPU空闲率,越接近100%越好
top -c 完整的进程命令显示
top -bn1 打印当前的top 进程
数字1 显示各个cpu的情况及个数
shift +m 内存占用排行
shift +p cpu占用排行
top -bn1 bn1显示所有进程信息,top -n 1 只显示一屏信息,供管道调用

vmstat(进程,磁盘,cpu,内存情况)

参数 解析
r

表示多少个进程分配给cpu

一般和cpu个数一起参考,超过CPU的个数就有瓶颈

b 阻塞的进程,进程阻塞
swpd 虚拟内存已使用的大小,如果大于0,表示机器物理内存不足,可能需要机器内存不足
free 空闲的空间
buff 存储系统中目录,权限等缓存
cache 用来记忆我们打开的文件,给文件做缓冲
si 每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露
so 每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上
bi 设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte
bo 块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整
in 每秒CPU的中断次数,包括时间中断
cs 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好
us 用户CPU时间
sy 系统CPU时间
id 空闲 CPU时间 id+us +sy =100
wt io等待磁盘写进去

mpstat(单个CPU情况)

参数 解析
mpstat -P ALL 查看所有CPU的平均情况
mpstat -P 2 查看指定CPU的情况

pidstat(单个进程的情况)

yum install -y sysstat  

参数 解析
pidstat -d -p 3679

kB_rd/s - 任务从硬盘上的读取速度(kb)
kB_wr/s - 任务向硬盘中的写入速度(kb)
kB_ccwr/s - 任务写入磁盘被取消的速率(kb)

pidstat -r -p 3679

minflt/s - 从内存中加载数据时每秒出现的小的错误的数目,这些不要求从磁盘载入内存页面。
majflt/s - 从内存中加载数据时每秒出现的较大错误的数目,这些要求从磁盘载入内存页面。
VSZ - 虚拟容量:整个进程的虚拟内存使用(kb)
RSS - 长期内存使用:任务的不可交换物理内存的使用量(kb)

pidstat -r 2 5 该命令比较容易定为出问题的进程
pidstat -urd -h 统计所有数据一起打印出来
pidstat -w -p 3679

Cswch/s - 每秒主动任务上下文切换数量
Nvcswch/s - 每秒被动任务上下文切换数量


iostat (磁盘情况)

参数 解析
iostat -d -k 2 5

-d 表示显示设备磁盘的使用状态

-k 表示强制使用kilobytes为单位,如果是-m ,则是M

2 每2秒刷新

6 刷新6次

tps 一次I/O请求
kB_read/s 每秒从设备(drive expressed)读取的数据量
kB_wrtn/s 每秒向设备(drive expressed)写入的数据量
kB_wrtn 写入的总数量数据量
kB_wrtn 写入的总数量数据量
iostat -c 2 5 类似mpstat -P ALL 命令,查看cpu 统计信息
iostat -d -x -k 2 5 多了-x 参数,用于显示磁盘io的更多信息

free(内存情况)

参数 解析
Mem 内存的使用情况
Swap 交换空间
total 系统总共可用的物理内存和交换空间大小
used 已使用的物理内存和交换空间
free 还有多少物理内存和交换空间
shared 被共享的物理内存大小
buff/cache 显示被buffer和cache使用的物理内存
available availble = free +buffer +cache

sar (找出系统的瓶颈)

怀疑CPU存在瓶颈,可用 sar -u 和 sar -q 等来查看
怀疑内存存在瓶颈,可用sar -B、sar -r 和 sar -W 等来查看
怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看

参数 解析

sar -f /var/log/sa/saxx

(追溯系统中xx天的系统运行情况)

指定时间段s(start),e(end)

sar -f /var/log/sa/saxx -s 00:00:00 -e 23:00:00 -r

sar -u

(CPU资源,磁盘IO)

%user - 用户模式下消耗的CPU时间的比例
%nice - 通过nice改变了进程调度优先级的进程,在用户模式下消耗的CPU时间的比例
%system - 系统模式下消耗的CPU时间的比例
%iowait - CPU等待磁盘I/O导致空闲状态消耗的时间比例
%steal - 利用Xen等操作系统虚拟化技术,等待其它虚拟CPU计算占用的时间比例
%idle - CPU空闲时间比例

sar -q

(系统平均负载)

runq-sz - 运行队列的长度(等待运行的进程数)
plist-sz - 进程列表中进程(processes)和线程(threads)的数量

sar -r

(内存和交换空间)

kbmemfree - 这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间
kbmemused - 这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间
%memused - 物理内存使用率,这个值是kbmemused和内存总量(不包括swap)的一个百分比
kbbuffers和kbcached - 这两个值就是free命令中的buffer和cache
kbcommit - 保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap)
%commit - 这个值是kbcommit与内存总量(包括swap)的一个百分比

sar -W

(查看页面交换发生状况)

pswpin/s - 每秒系统换入的交换页面(swap page)数量
pswpout/s - 每秒系统换出的交换页面(swap page)数量

sar -v 10 3

(每10秒采样一次,连续采样3次,观察核心表状态)

 

dentunusd - 目录高速缓存中未被使用的条目数量
file-nr - 文件句柄(file handle)的使用数量
inode-nr - 索引节点句柄(inode handle)的使用数量
pty-nr - 使用的pty数量

 

sar -n SOCK 1 3

(针对socket进行汇报)

 

totsck - 被使用的socket的总数目
tcpsck - 当前正在被使用于TCP的socket数目
udpsck - 当前正在被使用于UDP的socket数目
rawsck - 当前正在被使用于RAW的socket数目
ip-frag - 当前的IP分片的数目

sar -n EDEV 1 3

(网络数据包使用情况,EDEV失败的情况,DEV正确的情况)

rxerr/s - 每秒钟接收到的损坏的包的数目
txerr/s - 当发送包时,每秒钟发生的错误数
coll/s - 当发送包时,每秒钟发生的冲撞(collisions)数(这个是在半双工模式下才有)
rxdrop/s - 由于缓冲区满,网络设备接收端,每秒钟丢掉的网络包的数目
txdrop/s - 由于缓冲区满,网络设备发送端,每秒钟丢掉的网络包的数目
txcarr/s - 当发送数据包时,每秒钟载波错误发生的次数
rxfram/s - 在接收数据包时,每秒钟发生的帧对齐错误的次数
rxfifo/s - 在接收数据包时,每秒钟缓冲区溢出错误发生的次数
txfifo/s - 在发送数据包时,每秒钟缓冲区溢出错误发生的次数

iftop(网卡流量)

参数 解析
iftop -F 10.0.0.2/32 查看某个ip的出入网卡的流量

L

流量刻度显示
依次输入3 → t → B

3 根据最近40s统计排序

t 发送和接收合并一行

B 分别查看最近2s 10s 和40s的统计

<= 接收数据
=> 发送数据

netstat(端口相关)

参数 解析
netstat -lntp 服务器中运行的端口情况
netstat -ie 输出和ifconfig信息一样
netstat -s

列出所有端口的统计信息

加上(-t和-u)对应tcp和udp

netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn 网络连接状态汇总

lsof(当前系统打开文件的工具)

参数 解析
lsof 列出系统中打开的文件
lsof -u xxxx -c nginx 列出xxxx用户的nginx进程打开文件的信息
lsof -p xxx 进程号xxx打开文件的信息
lsof -i :80 打开80端口的信息
lsof +d /usr/local 显示目录下被进程开启的文件
lsof +D /usr/local 同上,目录下的目录会被找
lsof -g gid 显示进程归属gid的进程情况

find(查找文件)

参数 解析
find /data/logs/xxx/ -type f -mtime +3 -iname "*.log" 找出3天前/data/logs/xxx/ 目录中为*.log 的文件
find /data/logs/xxx/ -type f -iname "*.log" -exec rm -f {}\; 找出3天前/data/logs/xxx/ 目录中为*.log 的文件并删除
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!