2018-1-23 Linux学习笔记

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018-1-23 Linux学习笔记相关的知识,希望对你有一定的参考价值。

10.6 监控io性能

  • 本节主要学iostat和iotop两个监io性能的命令.
  • iostat命令用于监视系统输入输出设备和CPU的使用情况.它汇报磁盘活动统计情况,同时也会汇报出CPU使用情况.iostat有一个弱点, 就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。
  • 直接使用iostat即可查看,但用iostat -x可查看更为详细的信息(使用该命令应重点关注%util这一列)
    技术分享图片
  • iotop命令用于监视磁盘I/O使用状况. iotop具有与top相似的UI,其中包括PID、用户、I/O、进程等相关信息. Linux下的IO统计工具如iostat只能统计到per设备的读写情况, 如果想知道每个进程是如何使用IO的,使用iotop命令可以很方便的查看.
    技术分享图片

    10.7 free命令

  • free命令用于查看内存的使用情况(使用该命令应重点关注available这一列).
  • free -m/-g/-h --->以M/G/系统认为合适的单位显示内存使用情况
  • buffer/cache区别
    磁盘--->内存(cache)--->CPU
    CPU--->内存(buffer)--->磁盘

  • 公式: total=used+free+buff/cache
  • available包含free和buffer/cache的剩余部分
    技术分享图片

    10.8 ps命令

  • ps命令用于查看当前系统的进程状态.可以搭配kill指令随时中断、删除不必要的程序.使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等, 大部分信息都是可以通过执行该命令得到.
  • 常用用法:
    ps aux | grep 命令名
    ps -elf
    选项含义:
    a : 显示现行终端机下的所有程序,包括其他用户的程序
    u : 以用户为主的格式来显示程序状况
    x : 显示所有程序,不以终端机来区分
    -e : 此选项的效果和指定"A"选项相同
    -l或l : 采用详细的格式来显示程序状况
    -f : 显示UID,PPIP,C与STIME栏位
    -A : 显示所有程序

  • STAT部分说明:
    D 不能中断的进程
    R run状态的进程
    S sleep状态的进程
    T 暂停的进程
    Z 僵尸进程
    < 高优先级进程
    N 低优先级进程
    L 内存中被锁了内存分页
    s 主进程
    l 多线程进程
    + 前台进程
    技术分享图片
    技术分享图片

    10.9 查看网络状态

  • netstat命令可用于查看网络状态信息.
  • 常用用法:
    netstat -lnp --->查看监听端口(重点关注Active Internet connections (only servers)这一部分)
    netstat -an --->查看系统的网络连接状况(重点关注state状态为ESTABLISHED的情况,一般该状态个数1000以内,过大则需重点关注排查)
    选项含义:
    -a : 显示所有连线中的Socket
    -l : 显示监控中的服务器的Socket
    -n : 直接使用ip地址,而不通过域名服务器
    -p : 显示正在使用Socket的程序识别码和程序名称
    技术分享图片
    技术分享图片
  • 小技巧:
    统计系统当前各种状态的连接的数目:
    netstat -an | awk ‘/^tcp/{++sta[$NF]}END{for(key in sta)print key,"\t",sta[key]}‘
    技术分享图片
    补充:
    ss -an 和 netstat 用途相似.

    10.10 linux下抓包

  • tcpdump命令用于抓取网络包,,它可以打印所有经过网络接口的数据包的头信息,也可以使用-w选项将数据包保存到文件中, 方便以后分析.
  • 常用用法:
    tcpdump -nn -i ens33 --->抓取经过网卡ens33的数据包
    tcpdump -nn port 80 -i ens33 --->抓取80端口的数据包
    tcpdump -nn not port 22 and host 192.168.1.100 --->抓取非22端口并且来自IP为192.168.1.100的数据包
    tcpdump -nn -c 100 -w /tmp/1.cap --->抓取100包并保存到文件/tmp/1.cap
    tcpdump -r /tmp/1.cap --->读取文件/tmp/1.cap
    技术分享图片

  • tshark命令用于抓取并分析网络包.
    使用tshark命令需先安装wireshark包
    yum install -y wireshark
    小技巧:
    显示访问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"

扩展知识:
TCP协议的三次握手四次挥手机制简单原理(相关知识来自网络,感谢原作者).

  • 三次握手:
    1.A向B发起建立连接请求: A--->B
    2.B收到A的发送信号,并且向A发送确认信息: B--->A
    3.A收到B的确认信号,并向B发送确认信号: A--->B

通过第一次握手,B知道A能够发送数据.
通过第二次握手,A知道B能够发送数据.
结合第一,二次握手,A知道B能够接收数据.
结合第三次握手,B知道A能够接收数据.

  • 四次挥手:
    1.A向B发起请求,表示A没有数据要发送了: A--->B
    2.B向A发送信号,确认A的断开连接请求: B--->A
    3.B向A发送信号,请求断开连接,表示B没有数据要发送了: B--->A
    4.A向B发送确认信号,同意断开: A--->B

为何第2,3次挥手不能合在一次挥手中呢?因为此时A虽然不再发送数据了,但还能接收数据,B可能还有数据要发送给A,所以两次挥手不能合并为一次.

挥手次数比握手多一次,是因为握手过程,通信只需要处理连接即可.而挥手过程,通信除了处理连接,还要处理数据.

以上是关于2018-1-23 Linux学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

linux学习笔记二

linux学习笔记一

Linux学习笔记

Linux学习笔记

Linux学习笔记

Linux学习笔记(第一周)