linux学习第二十八篇:监控io性能,free命令,ps命令,查看网络状态,linux下抓包

监控磁盘io性能 (命令:iostat,iotop)##

查看磁盘读写状态:
iostat -x
%util:表示io等待,也就是磁盘使用占用cpu百分比。如果百分比很大,如50%,60%说明磁盘io很差,因为磁盘很忙,那么读写状态行rkb/s,wkb/s数值也会很大。
这里写图片描述

查看哪些进程在读写磁盘io,可以查看哪些进程导致磁盘io很忙(安装包:yum install -y iotop):
iotop
使用磁盘io越多的排在越前。
这里写图片描述

free命令

查看当前系统的总内存大小以及使用内存的情况

查看内存和交换分区的使用情况:
free //以kb为单位显示
free -m //以M为单位
free -h //以合适的单位为单位,包括有M,G(常用)
Mem是内存的使用情况,分别是内存的总大小(total),使用了多少(used),剩余多少(free),共享的多少(shared),缓存的多少(buffer/cache),马上可以使用的内存大小(available)
Swap是交换分区的使用情况
这里写图片描述
**公式:total=used+free+buff/cache **
avaliable包含free和buffer/cache剩余部分

PS:0000(磁盘) —>内存(cache) -->cpu //cpu到磁盘里读数据速度很慢,但是把磁盘的数据放到内存里,cpu到内存读取的速度就很快。
cpu(0000) —>内存(buffer)–>磁盘 //cpu运行的速度很快,但是磁盘很慢,要把数据写进磁盘就会很慢,cpu等不了,所以cpu分析处理好的数据先放到内存再放到内存。

查看进程:ps命令

ps命令是查看系统进程,静态的一次性的把当前进程的使用状况列出来。

常用的命令用法:
ps aux
这里写图片描述
%MEM:内存百分比。
VSZ:虚拟内存。
RSS:物理内存。
TTY:控制中断。
START:什么时候开始的。
TIME:运行了多久。
COMMAND:命令。
STAT部分说明:
D 不能中断的进程
R run状态的进程
S sleep状态的进程
T 暂停的进程
Z 僵尸进程
< 高优先级进程
N 低优先级进程
L 内存中被锁了内存分页
s 主进程
l 多线程进程

  • 前台进程

ps -elf

查看进程在哪里启动:
ls -l /proc/进程PID //进程的PID都有对应的目录

PS:线程和进程的关系:线程是属于进程的,线程运行在进程空间内,同一进程所产生的的线程共享同一用户内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除。所以,线程不能独立地执行,它必须依附在一个运行的应用程序上(即进程上),而一个进程至少需要一个线程作为它的指令执行,进程管理着资源(比如CPU、内存、文件等等)。而将线程分配到某个CPU上执行
线程和进程的区别:当操作系统分配给进程资源后,同属一个进程的多个线程之间可以相互共享进程中的内存资源,原因是线程没有自己独立的内存资源,它只有自己执行的堆栈和局部变量。而多个进程之间每个进程都拥有自己的一整套变量,即每个进程都有自己独立的内存单元。这就使得多线程之间的通信比多进程之间的通信更加的容易和高效。

查看网络状态##

命令:netstat //查看tcp/ip的通信状态

ss -an 与netstat差不多,但是不会显示进程名字。

命令中各选项的含义如下:
-a 显示所有socket,包括正在监听的。

-c 每隔1秒就重新显示一遍,直到用户中断它。

-i 显示所有网络接口的信息,格式同“ifconfig -e”。

-n 以网络IP地址代替名称,显示出网络连接情形。

-r 显示核心路由表,格式同“route -e”。

-t 显示TCP协议的连接情况。

-u 显示UDP协议的连接情况。

-v 显示正在进行的工作。

查看监听端口,打印当前系统启动哪些端口:
netstat -lnp
这里写图片描述

netstat -ltnp //只查看tcp,没有udp和unix
这里写图片描述

netstat -ltunp //只查看tcp,udp。没有unix

查看系统的所有网络连接状况:
netstat -an
这里写图片描述
netstat -an参数中stat(状态)的含义如下:

参数含义
LISTEN侦听来自远方的TCP端口的连接请求
SYN-SENT在发送连接请求后等待匹配的连接请求
SYN-RECEIVED在收到和发送一个连接请求后等待对方对连接请求的确认
ESTABLISHED代表一个打开的连接,我们常用此作为并发连接数)
FIN_WAIT-1等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN_WAIT-2从远程TCP等待连接中断请求
CLOSE-WAIT等待从本地用户发来的连接中断请求
CLOSING等待远程TCP对连接中断的确认
TIME_WAIT等待足够的时间以确保远程TCP连接收到中断请求的确认
LAST_ACK等待原来发向远程TCP的连接中断的确认
CLOSED没有任何连接状态
  • 在日常工作中,我们可以用shell组合命令来查看服务器的TCP连接状态并汇总,命令如下:
    netstat -an|awk '/^tcp/{++S[KaTeX parse error: Expected 'EOF', got '}' at position 4: NF]}̲END{for (a in S…NF]} END {for(key in sta) print key,"\t",sta[key]}'

参数说明:

参数说明
CLOSED没有连接活动或正在进行的
LISTEN服务器正在等待的进入呼叫
SYN_RECV一个连接请求已经到达,等待确认
SYN_SENT应用已经开始,打开一个连接
ESTABLISHED正常数据传输状态,也可以近似的理解为当前服务器的并发数;(如果数值很大说明系统很忙,1000以内都是可以接受的)
FIN_WAIT1应用已经完成
FIN_WAIT2另一边同意释放
ITMED_WAIT等待所有分组死掉
CLOSING两边同时尝试关闭
TIME_WAIT另一边已初始化一个释放
LAST_ACK等待所有分组死掉
  • 统计 TCP连接数 命令:
    netstat -an |grep ‘ESTABLISHED’ |grep ‘tcp’ |wc -l

linux下抓包

抓包工具tcpdump
安装包:yum install -y tcpdump

用法:tcpdump -nn

  1. 查看特定网卡需要参数i:
    **tcpdump -nn -i ens33 **
    这里写图片描述

  2. 查看特定端口的包:
    tcpdump -nn -i ens33 port 22

  3. 不查看某个端口的包:
    tcpdump -nn -i ens33 not port 22 //查看其他端口除了22端口

  4. 只查看某个ip的包:
    tcpdump -nn -i ens33 not port 22 and host 113.105.125.150 //只查看IP 113.105.125.150的其他端口除了22端口的包

  5. 设定抓多少个包(-w写入的文件是数据包):
    tcpdump -nn -c 100 -w 1.cap //只抓100个包并放到文件1.cap中。1.cap文件中的内容是不能直接cat查看的,因为这个文件是从网卡里捕获的数据包信息,是真真正正的通信的数据。

  6. 查看抓包数据的文件内容(-r显示的信息是数据流):
    tcpdump -r 1.cap

命令:tshark //与tcpdump类似的抓包工具

安装包命令:yum install -y wireshark

查看什么IP访问我们的网站的什么链接:
**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” **

扩展:

  1. 扩展tcp三次握手四次挥手 http://www.doc88.com/p-9913773324388.html

  2. 使用tshark抓包:

  3. 以下的用法可以显示访问http请求的域名以及uri

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"
  1. 以下可以抓取mysql的查询
tshark -n -i eth1 -R 'mysql.query' -T fields -e "ip.src" -e "mysql.query"

另外一种方法:

tshark -i eth1 port 3307  -d tcp.port==3307,mysql -z "proto,colinfo,mysql.query,mysql.query"
  1. 以下可以抓取指定类型的MySQL查询
tshark -n -i eth1 -R 'mysql matches "SELECT|INSERT|DELETE|UPDATE"' -T fields -e "ip.src" -e "mysql.query"
  1. 统计http的状态
tshark -n -q -z http,stat, -z http,tree

这个命令,直到你ctrl + c 才会显示出结果

  1. tshark 增加时间标签
    tshark -t ad
    tshark -t a
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值