10.1 使用w查看系统负载

1. 查看当前日期时间date

[root@hao-01 ~]# date

clipboard.png

2. 查看系统负载uptime

[root@hao-01 ~]# uptime

clipboard.png

3. 查看系统负载w

[root@hao-01 ~]# w

(注意:w查看系统负载一分钟使用cpu值超过逻辑CPU数值,就有进程等待运行了!)

clipboard.png

当前时间(09:22:12)  启动时长(up 13 min)  用户登录数(1 user)

load average:  1分钟内有多少使用cpu活动进程数量

5分钟内有多少使用cpu活动进程数量

15分钟内有多少使用cpu活动进程数量

活动进程数量超过逻辑cpu数值,则为有进程需要等待运行,cpu不够分配!

2. 查看有几颗逻辑cpu

[root@hao-01 ~]# cat /proc/cpuinfo

0表示有1颗逻辑cpu,如果是7,则表示有8颗逻辑cpu(数值7为最大值)

(注意:w查看系统负载一分钟使用cpu值超过逻辑CPU数值,就有进程等待运行了!)

clipboard.png

10.2 vmstat命令

vmstat 命令的含义: 显示虚拟内存状态,监控系统状态

(报告关于进程、内存、硬盘读/写等系统整体运行状态)

(查看系统瓶颈:判断出是cpu不够?内存不够?还是磁盘io读/写太高?)

1.每一秒钟动态显示1次 :

[root@hao-01 ~]# vmstat 1

2.每一秒钟动态显示1次,只显示5次 :

[root@hao-01 ~]# vmstat 1 5

clipboard.png

常用字段说明:

procs(进程)

r(run)  :   运行进程数量(表示多少个进程在运行)

b(block) :  等待进程数量(表示多少个进程等待运行)

memory(内存)

swpd :  使用虚拟内存大小(0数值不变,则正常;如果频发变化,则内存不足)

swap

si   :  有多少kb的数据,从swap进入内存中

so  :  有多少kb的数据,从内存里出来

io(磁盘)

bi   :  从磁盘里读的数据量有多少

bo  :  从磁盘里写的数据量有多少

CPU(以百分比表示)(us%+sy%+id%=100%)

us 用户服务进程占用cpu的百分比(如果值长时间大于50,则系统资源不够了)

sy 系统服务进程占用cpu的百分比

id  空闲的百分比

wa有多少个进程等待cpu的百分比

10.3 top命令

1.查看进程使用资源情况

[root@hao-01 ~]# top

clipboard.png

kiB Mem :物理内存(单位kb)

total总内存大小,free剩余内存大小,used使用内存大小,

kiB Swap:交换分区(单位kb)

RES:占用的物理内存大小

%CPU  :占用cpu百分比(排序按占用的多,排的前)

%MEM :占用内存百分比(排序按占用的多,排的前)

COMMAND :进程名称

按键说明:

大写M%MEM内存使用排序(使用多的进程排在前)

clipboard.png

大写P%CPUcpu使用排序(使用多的进程排在前)

clipboard.png

数字1:多个逻辑cpu切换查看

切换了 %Cpu0这个逻辑cpu。

clipboard.png

q:退出

2.显示详细的进程信息:

(进程具体命令,在COMMAND下列出)

[root@hao-01 ~]# top -c

3.静态显示所有进程 :

(适合写脚本的时候用到)

[root@hao-01 ~]# top -bn1

clipboard.png

4. 杀死查看指定进程:top 进程对应的PID值

[root@hao-01 ~]# top 3319

clipboard.png

10.4 sar命令

1. 安装sar命令:

[root@hao-01 ~]# yum install -y sysstat

2. 查看网卡流量,设定每隔一秒钟显示一次,共显示10次:

[root@hao-01 ~]# sar -n DEV1 10

14时35分08秒(时间)    IFACE(网卡名字)

rxpck/s(每秒接收到数据包,单位:)

txpck/s(每秒发出去数据包,单位:)

rxkB/s(每秒接收到数据量,单位:kb)

txkB/s(每秒发出去数据量,单位:kb)

重要:数据包接收到几千个算正常,如果上万个数据包,则有问题!!!

/var/log/sa/sa日期文件:是二进制文件,每隔10分钟生成更新一次

/var/log/sa/sar日期文件:是普通文本文件,可以用cat查看内容,这样文件会在第二天生成。

3.查看网卡流量情况历史文件sar -n DEV -f /var/log/sa/sa日期

(/var/log/sa/下保存的sa**文件最高保留一个月,保存的名称格式是按sa当天日期

[root@hao-01 ~]# sar -n DEV -f /var/log/sa/sa10

4. 查看系统负载情况历史文件sar -q-f  /var/log/sa/sa日期

[root@hao-01 ~]# sar -q-f  /var/log/sa/sa10

5. 查看磁盘读写情况历史文件sar -b -f  /var/log/sa/sa日期

[root@hao-01 ~]# sar -b -f  /var/log/sa/sa10

/var/log/sa/sa日期文件:是二进制文件,每隔10分钟生成更新一次

/var/log/sa/sar日期文件:是普通文本文件,可以用cat查看内容,这样文件会在第二天生成。

10.5 nload命令

1. 安装nload需要先安装epel-release包:

[root@hao-01 ~]# yum install -y epel-release

2. 安装nload命令:

[root@hao-01 ~]# yum install -y nload

3.查看网卡流量(动态显示):

[root@hao-01 ~]# nload

clipboard.png

Device 网卡名称

[]          远程地址

(1/2)     共两块网卡,当前查看的第一块网卡,用左右方向键查看其它网卡情况。

Curr    当前的值

Avg      平均值

Min      最小值

Max     最大值

退出:q


扩展:

tcp三次握手四次挥手 

tshark几个用法:

10.6 监控io性能

安装iostat命令(也是安装这个包) :

[root@hao-01 ~]# yum install -y sysstat

1. (监控)查看 磁盘io使用情况:iostat -x

重要关注%util 值 表示io磁盘使用多少占用cpu的!

[root@hao-01 ~]# iostat -x

[root@hao-01 ~]# iostat -x 1

clipboard.png

2.安装iotop命令 :  

[root@hao-01 ~]# yum install -y iotop

3. (监控)查看 进程使用磁盘io百分比(哪个进程使用磁盘比较大) :iotop

重要关注:IO> 下的值(数值越大,排名越前)

[root@hao-01 ~]# iotop

clipboard.png

10.7 free命令

1. 查看内容使用情况(默认单位:kb):free

[root@hao-01 ~]# free

2. 查看内容使用情况(指定单位:mb):free -m

[root@hao-01 ~]# free -m

3. 查看内容使用情况(直观单位):free -h

[root@hao-01 ~]# free -h

clipboard.png

Mem(内存使用):total  used  free  sharedbuff/cache

total(内存总大小)

used(使用内存)

free(剩余内存)

shared(共享内存)

buff/cache(缓冲/缓存)

磁盘读出来的数据——经过内存(cache缓存)——到CPU处理

CPU处理完的数据——经过内存(buffer缓冲)——放到磁盘

公式:total=used+free+buff/cache

avaliable包含freebuff/cache剩余部分

Swap(交换分区):如果Swap不足了,需要考虑增加内存了(或者是内存泄漏程序有bug需要排查了)!

10.8 ps命令

1. 查看系统当前所有进程ps -elf

列出系统当前所有进程 ps aux

[root@hao-01 ~]# ps aux

clipboard.png

USER(运行用户名称)

PID(进程id号)

%CPU(使用cpu百分比)

%MEM(使用磁盘百分比)

STAT部分说明:

D不能中断的进程

R run状态的进程(某一个时间段内使用cpu的)

S sleep状态的进程(自动停止暂停,自动激活启动的)

T 暂停的进程(Ctrl c 的进程)

Z 僵尸进程(系统比较多僵尸进程,需要杀死)

<  高优先级进程

N低优先级进程

L   内存中被锁了内存分页(极少见)

s    主进程

l     多线程进程

+    前台进程

2. 查看指定进程是否运行: ps aux |grep指定进程名称

[root@hao-01 ~]# ps aux |grepmysql

[root@hao-01 ~]# ps aux |grepnginx

3.杀死指定进程(不要随意杀死进程哦):

[root@hao-01 ~]# kill 进程Pid

clipboard.png

ps aux |grepps aux

4. 查看进程是在哪个文件启动的 :ls -l /proc/进程Pdi/

[root@hao-01 ~]# ls -l /proc/3406/

10.9 查看网络状态

1. 查看网络状态netstat

[root@hao-01 ~]# netstat

2.查看监听端口 netstat -lnp

[root@hao-01 ~]# netstat -lnp

3.只查看tcp监听端口(不包含socket):

[root@hao-01 ~]# netstat -lntp

4. 查看tcpudp监听端口(不包含socket):

[root@hao-01 ~]# netstat -lntup

5.查看系统的网络连接状态(无法显示进程名字):ss -an

查看系统的网络连接状态:netstat -an

[root@hao-01 ~]# netstat -an

tcp三次握手四次挥手(重要,需了解,面试可能会问到)

6. 查看所有状态数字

[root@hao-01 ~]# netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'

clipboard.png

ESTABLISHED:客户端和服务端在通信数量(1000以内都是正常的)

10.10 Linux下抓包

1.安装tcpdump抓包命令:

[root@hao-01 ~]# yum install -ytcpdump

2. 抓包: tcpdump -nn -i网卡名称

[root@hao-01 ~]# tcpdump -nn -iens33

原本地ip地址端口号  >到  数据包ip数据包ip端口

clipboard.png

3. 抓包 指定端口tcpdump -nn -i网卡名称port端口号

[root@hao-01 ~]# tcpdump -nn -iens33port22

4. 抓包 排除指定端口tcpdump -nn -i网卡名称ontport端口号

[root@hao-01 ~]# tcpdump -nn -iens33not port22

5.抓包 排除指定端口,并指定ip的数据包:

tcpdump -nn -i网卡名称ontport端口号and host  指定ip

[root@hao-01 ~]# tcpdump -nn -iens33not port22and host 192.168.47.1

6.指定抓包数量,并保存指定文件内

tcpdump -nn -i网卡名称 -c抓包数量-w存放文件地址

[root@hao-01 ~]# tcpdump -nn -iens33 -c10-w/tmp/1.cap

7.安装tshark抓包命令:

[root@hao-01 ~]# yum install -y wireshark

8.tshark 查看指定网卡,80端口的访问情况:

tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"

tshark几个用法: