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学习笔记的主要内容,如果未能解决你的问题,请参考以下文章