监控io性能、free命令、ps命令、查看网络状态、linux下抓包

监控io性能

iostat查看磁盘情况(需要安装sysstat包)

可以直接运行该命令
iostat

监控io性能、free命令、ps命令、查看网络状态、linux下抓包

或者后面加一个1,就是动态显示。
iostat 1

监控io性能、free命令、ps命令、查看网络状态、linux下抓包

iostat和iostat 1所表现出来的东西,用sar都可以体现出来,但是用iostat -x 就无法使用sar体现出来
iostat -x

监控io性能、free命令、ps命令、查看网络状态、linux下抓包

iostat -x有个非常重要的指标,%util,表示磁盘有多少时间占用cpu时间比,等待io时间占比,等待磁盘读写时间占总时间的比例。
监控io性能、free命令、ps命令、查看网络状态、linux下抓包

如果这一列的数字很大,50或者60,并且wkb/s列也很大那就说明磁盘io比较大比较忙,但是如果wkb/s列并不大,那么就说明磁盘出故障了。

硬盘慢就会影响系统的性能。

iotop 查看具体进程读写磁盘情况,和top命令很像(需要安装iotop)
yum install -y iotop

监控io性能、free命令、ps命令、查看网络状态、linux下抓包

Total DISK WRITE 写入速度
Actual DISK WRITE 读取速度
监控io性能、free命令、ps命令、查看网络状态、linux下抓包

我们主要查看IO这一列
iotop

监控io性能、free命令、ps命令、查看网络状态、linux下抓包

free命令

free查看内存使用情况
free

监控io性能、free命令、ps命令、查看网络状态、linux下抓包

第一行说明、第二行是内存使用情况、第三行是交换分区。

第一列 total 是总大小(默认单位是kb,可以使用-m指定单位为兆,或者使用-h使用适当的单位)、第二列 used 是已使用的,第三列 free 是剩余的、第四列 shared 是共享的、第五列 buff/cache、第六列available。

系统会把内存预留一点给buff/cache(buff是缓冲、cache是缓存)
监控io性能、free命令、ps命令、查看网络状态、linux下抓包

free查看内存使用情况主要看的就是avaliable。
监控io性能、free命令、ps命令、查看网络状态、linux下抓包

ps命令

ps查看进程

ps aux (静态的列出系统所有进程)
ps aux

监控io性能、free命令、ps命令、查看网络状态、linux下抓包

从前向后分别是 运行用户、pid、cpu占用、内存占用、虚拟内存、物理内存、tty、stat(进程的状态)、什么时候启动的、运行了多久了、命令。

pid我们会在想要结束一个进程的时候使用,比如我们想要结束2086,那就使用kill 2086(2086为这个进程的pid)
kill 2086

监控io性能、free命令、ps命令、查看网络状态、linux下抓包

监控io性能、free命令、ps命令、查看网络状态、linux下抓包

然后我们使用管道符查看刚才结束的进程2086是否还存在(刚才结束进程前,我们得知该进程为top)
ps aux |grep top

监控io性能、free命令、ps命令、查看网络状态、linux下抓包

我们要关注STAT(进程的状态)。

STAT(进程的状态)有:

D不能中断。

R(run)正在跑的进程(在一个时间段内使用cpu)。

S(sleep)进程运算完可能会暂停一下,过会会**

T暂停的进程(ctrl+z暂停的进程)

+前台进程

Z僵尸进程

<高优先级的进程(cpu优先处理)

N低优先级

L内存中被锁了内存分页的

s主进程

L多线程进程

ps aux用法:查看某个进程有没有在运行(上面已经使用过一次了),查看top是否在运行
ps aux |grep top

监控io性能、free命令、ps命令、查看网络状态、linux下抓包

查看网络状态

netstat查看网络状态(tcp/ip通信状态)

netstat -lnp 查看监听端口(用户和服务器通信需要端口)
netstat -lnp

监控io性能、free命令、ps命令、查看网络状态、linux下抓包

像tcp6,udp6 这样后面加6的,就是ipv6的端口,没有加的如tcp,udp 就是ipv4的端口

STREAM内部通信

监控io性能、free命令、ps命令、查看网络状态、linux下抓包

查看tcp/ip状态
netstat -an

监控io性能、free命令、ps命令、查看网络状态、linux下抓包

只查看tcp以及tcp6的端口
netstat -ltnp

监控io性能、free命令、ps命令、查看网络状态、linux下抓包

只查看tcp以及tcp6以及udp端口
netstat -ltunp

监控io性能、free命令、ps命令、查看网络状态、linux下抓包

TIME_WAIT状态:客户端和服务端两个机器相互通信之后它们的链接还没有断开,处于一种等待的状态,等待下次这两台机器再次连接传输数据。

查看各个状态的个数命令
netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'

监控io性能、free命令、ps命令、查看网络状态、linux下抓包

我们主要关注ESTABLISHED,这个数字如果很大说明你的系统很忙,(并发连接数,在这个时间内有多少个客户端在和服务端通信)一般一千以内

ss -an和netstat相似,不过不显示进程名
ss -an

监控io性能、free命令、ps命令、查看网络状态、linux下抓包

查看LISTEN一列
ss -an |grep -i listen

监控io性能、free命令、ps命令、查看网络状态、linux下抓包

linux下抓包

tcpdump抓包工具(如果没有需要安装tcpdump包)
yum install -y tcpdump

监控io性能、free命令、ps命令、查看网络状态、linux下抓包

指定网卡抓包
tcpdump -nn -i ens33

监控io性能、free命令、ps命令、查看网络状态、linux下抓包

-nn表示ip用数字的形式表示出来,如果不加会显示主机名。
tcpdump -i ens33

监控io性能、free命令、ps命令、查看网络状态、linux下抓包

第一列往后分别是时间、源ip、端口、到哪个ip去、端口、包的信息。
监控io性能、free命令、ps命令、查看网络状态、linux下抓包

我们主要关注源IP、端口和目标IP、端口。看数据的流向。

有时候也要看length(长度),如下图
监控io性能、free命令、ps命令、查看网络状态、linux下抓包

指定端口(porn指定,22端口 可修改为任意端口)
tcpdump -nn -i ens33 port 22

监控io性能、free命令、ps命令、查看网络状态、linux下抓包

排除写法,排除22端口(not 去除此端口)
tcpdump -nn -i ens33 not port 22

监控io性能、free命令、ps命令、查看网络状态、linux下抓包

排除22端口并指定ip
tcpdump -nn -i ens33 not port 22 and host 192.168.71.131

监控io性能、free命令、ps命令、查看网络状态、linux下抓包

指定抓的包个数(-c 指定数字)
tcpdump -nn -i ens33 -c 10

监控io性能、free命令、ps命令、查看网络状态、linux下抓包

指定抓包数,并将结果存到指定文件里去,(这个文件cat不了,使用file可查看大概信息)
tcpdump -nn -i ens33 -c 10 -w /tmp/1.cap

监控io性能、free命令、ps命令、查看网络状态、linux下抓包

查看数据流
tcpdump -r /tmp/1.cap

监控io性能、free命令、ps命令、查看网络状态、linux下抓包

tshark抓包工具类似于tcpdump(需要安装wireshark包)
yum install -y wireshark

监控io性能、free命令、ps命令、查看网络状态、linux下抓包

查看指定网卡80端口的wap访问的情况(由于虚拟机没运行任何80端口程序,所以这条命令暂时无法使用)
tahark -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访问我的80端口网站,访问的哪个位置,通过什么链接进来的