监控io性能、free、ps命令、查看网络状态、Linux下抓包 使用介绍
第7周第2次课(5月8日)
课程内容:
10.8 ps命令
10.9 查看网络状态
10.10 linux下抓包
扩展tcp三次握手四次挥手 http://www.doc88.com/p-9913773324388.html
tshark几个用法:http://www.aminglinux.com/bbs/thread-995-1-1.html
[root@jimmylinux-002 ~]# iostat -x
查看磁盘io百分比,注意关注%util这一列,如果数字超过50%就说明有问题。
如果磁盘io很忙,读写很频繁,查看到底是那个进程频繁在读写,可以通过iotop命令查看,这个和top命令很像,都是动态显示。
默认没有iotop命令,需要先安装。
10.7 free命令
可以直接查看内存使用情况,在CentOS6和7显示是不同的,CentOS7里面会显示的更加直观。
第一行是一个说明
第二行是内存使用情况
第三行swap使用情况
[root@jimmylinux-002 ~]# free -h 可以更直观查看内存使用情况
正常情况下,已使用+空余=总大小,但是在Linux里面会把内存预先分配一部分出来给buff和cache。
数据流向:
①0000(磁盘)-->内存(cache)-->CPU 存放到硬盘的数据到CPU,中间需要经过内存保存下来,然后再到CPU,这个叫缓存cache。
②CPU(0000)-->内存(buff)-->硬盘 CPU计算好的数据存放到硬盘,中间需要经过内存保存下来,然后再到硬盘,这个叫缓冲buff。
由于数据流向不同,所以系统会把内存先预留一部分出来给buff和cache
total的公式=used+free+buff/cache
available包含free和buff/cache剩余部分
真正查看内存剩余,主要是看available,而不是直接查看free。
swap也需要关注,如果free剩余为0,说明内存不够了,或者内存泄漏,系统有bug,这个时候需要增加内存。
10.8 ps命令
[root@jimmylinux-002 ~]# ps aux
静态一次性把当前的所有进程使用情况列出来,ps和top显示结果很相像。
[root@jimmylinux-002 ~]# ps -elf 也可以使用这个命令查看,和ps aux基本上一样。
检查系统中有没有某一个进程在运行,可以通过管道符方式查看。
stat状态说明
D-->不能够中断的进程,如果有很多D状态的进程,那么就会直接影响到系统负载。
R-->某个时间段内在使用CPU的进程
S-->进程使用完CPU后,会暂停一会。
T-->暂停的进程
Z-->僵尸进程太多的话,可以kill掉。
<-->高优先级进程
N-->低优先级进程
L-->内存中被锁了内存分页
s-->主进程
|-->多线程进程,线程和进程的关系,线程是由一个大的进程组成,一个进程里面有多个线程。
+-->前台进程
10.9 查看网络状态
netstat 查看TCP/IP通信的一个状态
[root@jimmylinux-002 ~]# netstat -lnp 监听服务和端口
[root@jimmylinux-002 ~]# netstat -an 查看tcpip状态
查看netstat需要关注ESTABLISHED,如果数字很大说明系统很忙,数字表示有多少个客户端在和服务端保持连接、保持通信,通常这里数字在1000以内服务器都是能接受的。
[root@jimmylinux-002 ~]# ss -an 和netstat命令功能类似,唯一缺点不能够查看进程名字。
10.10 linux下抓包
tcpdump用法:
[root@jimmylinux-002 ~]# tcpdump -nn -i ens33 第一个n表示IP用数字显示,如果不加会显示主机名,第二个n表示端口号。
tcpdump -nn port 80 指定端口抓包
tcpdump -nn not port 22 and host 192.168.0.100 根据判断条件进行抓包
tcpdump -nn -c 100 -w 1.cap 指定长度抓包并生成1.cap文件
tcpdump -r /tmp/1.cap 使用-r读取1.cap文件的内容(主要就是数据流向)
tshark和tcpdump一样都是可以抓包的工具,tshark可以查看指定网卡80端口的一个web服务访问的情况,类似web服务的访问日志。