7月11日任务
10.6 监控io性能
10.7 free命令
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
html
监控IO性能linux
iostat -x 磁盘使用 和sar在同一个包下, 安装 sysstat的时候就装了ios
主要是看-x选项后的%util表示的是IO等待,磁盘使用有多少时间是占用cpu的一个时间比,由于cpu有分配给内存,应用同时也有等待写入磁盘等操做。web
iotop须要安装 直接yum install iotop便可,能够查看到即时的进程对于io的占用状况数据库
free缓存
直接查看内存使用状况的命令服务器
free -m 查看单位是M
网络
free -h 查看更人性化多线程
total 总共是多大内存 total = used + free+buff/cache并发
used 是使用了多少内存
free 是剩余的内存 可是used加上free并不是total,为何?由于linux系统预分配部分给buff和cache。由于数据传输过程须要因此系统预留了。
shared
buff/cache 缓冲/缓存 前者是数据从cpu到磁盘 后者是从磁盘到cpu的时候的内存
available free+buff/cache未使用的部分 就是available,就是真正剩余的物理内存----查看free的时候available的值最重要
何为buffer和cache?
数据是有必定流向的,有两种方式,一种是拿出来数据交给cpu运算和分析,中间是须要通过一个内存的,目的是让数据有一个缓和,由于cpu和磁盘的速度相差是比较大的。缓存下数据放到内存,须要用的时候从内存(cache)中去拿。反过来计算完的cpu的数据,
须要存回到磁盘里去,这个过程直接写进去太慢,因此须要内存(buff)来临时存储数据,而后再存储到磁盘中去。
0101010 (磁盘) ---> 内存(cache)--> cpu
cpu01010010 ---> 内存(buffer)-->磁盘
ps命令
ps aux 列出系统中的全部进程
静态的一次性的把当前的进程的使用情况列出来。
可使用管道符用grep查看是否存在某个进程
ps -elf 和 aux差很少
显示:
user 用户
PID process id 一般这个pid用来kill的时候来用 kill pid 就能够杀掉进程////还有就是系统被黑了,看到一个陌生的进程,想看看这个进程的位置,就找到pid而后 进入/proc/pid就能够进入到进程的目录进行查看。
%cpu 占cpu的百分比
%MEM 占内存百分比
VSZ RSS 虚拟内存 物理内存
TTY 控制台登录
STAT 须要关注
stat是进程的状态,有如下几种:
D--- 不能中断的进程。中断的话会对程序有影响。这个会直接影响系统负载,由于一直运行因此系统的负载会跟这个有直接的关系。
R ---run状态的进程。指的是某一个时间段内在使用cpu
S--- sleep状态。 运行完sleep,而后激活在运行
T --暂停的进程
S sleep的进程(大写S)
将vmstat暂停后fg继续,再用另外一个终端查看状态变成了s+,是由于vmstat占用时间的cpu很是短,因此是一个放大的sleep的状态,就是看起来是运行的,其实是睡眠,运行,睡眠运行的状态,耗费的cpu的资源也特别的少。+表示前台进程
从下图能够看到换成后台运行后,+没有了,同时r也出现了。s和r交替出现。
Z 僵尸进程
< 高优先级的进程 cpu优先分配资源给它使用
N 低优先级进程。
L 内存中被锁了内存分页的进程
s 主进程
l 多线程进程
最大的区别就是:
1 进程里包含了线程,线程是进程的子单元
2 同一个进程下的线程所有共享相同的内存,而进程之间内存相互隔离。
查看网络状态
netstat就是查看tcp/ip通讯状态的命令
好比安装一个数据库服务,server服务等,就须要监听端口,所谓监听端口就是不一样的应用是经过哪一个端口进行通讯的。打开一个端口其余的设备才能够链接,经过端口进行数据的通讯。好比80 web端口,22 sshd端口,远程链接
netstat -lnp
netstat -ltnp 只查看tcp -lunp只查看udp -ltunp 只查看tcp udp
l---listen
解释上图:
tcp 就是ipv
tcp6 是ipv6
须要了解tcp udp的协议概念。三次握手,四次挥手
socket是同一个服务器两个进程之间进行通讯的文件。
上图查看的是都有哪些socket文件。
在以后部署一些服务后,须要用ps查看进程,或者用netstat查看端口。
netstat -nn 查看tcp/ip状态。
有一条netstat 管道用awk显示的命令,能够显示当前的监听,创建等的状态
netstat -an |awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'
注意须要关注 established
这个值若是很大,说明系统很忙,网站并发链接--就是同一时刻有多少个客户端在链接服务器。
这个数字就是并发链接数。也就是正在保持通讯的状态,会直接占用资源。一般1000之内的话还算正常,若是数字过大就不正常了。
ss -an和netstat很像
而后可使用awk来进行信息的筛选。好比查看在监听的服务,-i忽略大小写。缺点是不显示进程的名字。
Linux下抓包
抓包工具 tcpdump
查看进入的包都有哪些。以及数据的流向,length 。默认都是tcp的包,若是发现不少udp的包就有可能***了。eg DDos UDP flood 。只能接入专业的防***设备或服务。
tcpdump -nn 网卡名
-nn 第一个n表示ip显示成数字,不加会显示主机名。
时间 源ip及端口 > 目标ip及端口:数据包信息
tcpdump -nn 网卡 port 80 指定port
tcpdump -nn 网卡not port 22 and host 192.168.0.100 排除22端口,只要192.168.0.100的包
tcpdump -nn -c 10 -w 1.cap 数据包 写入10个记录到1.cap文件中
并不能cat由于里面存的是真正的数据信息,由于它抓的是经过网卡经过的数据。若是想看的话,可使用 tcpdump -r 来进行查看
wireshark 也是用来抓包的命令 yum install wireshark
如下命令能够用来查看指定网卡的80端口的web访问的状况。可是没装web service就不可以完成这个动做
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"
看一下老师线上服务器的展现,很是的棒,什么ip访问的什么page均可以看到,这个彻底能够用来统计用户访问。?