前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux学习第二十八篇:监控io性能,free命令,ps命令,查看网络状态,linux下抓包

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

作者头像
用户1215343
发布2018-02-05 17:25:17
5.2K0
发布2018-02-05 17:25:17
举报
文章被收录于专栏:linux运维学习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[$NF]}END{for (a in S)print a,S[a]}’ netstat -an | awk ‘/^tcp/ {++sta[$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
这里写图片描述
这里写图片描述
  1. 查看特定端口的包: tcpdump -nn -i ens33 port 22
  2. 不查看某个端口的包: tcpdump -nn -i ens33 not port 22 //查看其他端口除了22端口
  3. 只查看某个ip的包: tcpdump -nn -i ens33 not port 22 and host 113.105.125.150 //只查看IP 113.105.125.150的其他端口除了22端口的包
  4. 设定抓多少个包(-w写入的文件是数据包): tcpdump -nn -c 100 -w 1.cap //只抓100个包并放到文件1.cap中。1.cap文件中的内容是不能直接cat查看的,因为这个文件是从网卡里捕获的数据包信息,是真真正正的通信的数据。
  5. 查看抓包数据的文件内容(-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抓包:

  1. 以下的用法可以显示访问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”
  2. 以下可以抓取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”
  3. 以下可以抓取指定类型的MySQL查询 tshark -n -i eth1 -R ‘mysql matches “SELECT|INSERT|DELETE|UPDATE”’ -T fields -e “ip.src” -e “mysql.query”
  4. 统计http的状态 tshark -n -q -z http,stat, -z http,tree 这个命令,直到你ctrl + c 才会显示出结果
  5. tshark 增加时间标签 tshark -t ad tshark -t a
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年11月19日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 监控磁盘io性能 (命令:iostat,iotop)
  • free命令
  • 查看进程:ps命令
  • 查看网络状态
  • linux下抓包
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档