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

简介:

10.6 监控io性能

wKiom1nmLN6CpU_ZAAv2W_GJ-CI062.png

磁盘的io是一个非常重要的指标,所以要更详细的查看磁盘状态,需要用到iostat命令,如果之前已经安装了sysstat的话,在安装sysstat包时iostat命令就已经被安装了。


  iostat直接回车可以查看到当前磁盘的信息:

wKioL1nmKiqBCA-MAAWXn4Yp8Ms263.png

kB_read/s表示每秒的读取速度,kB_wrtn/s表示每秒的写入速度。Device那列则是磁盘名称。



加上数字1则可以动态的每秒更新一次信息:

wKiom1nmLOWiF0EQAAlAamtwmQM148.png


sar -b也能够查看磁盘信息:

wKioL1nmKjCTxNFsAAQiqXG9S5Q994.png


iostat重要的是-x选项,能够显示%util这个指标,这个指标表示CPU等待磁盘io的百分比,如果这个百分比很大就表示磁盘io很忙。在读写的数值不大的情况下,%util列数值却很大,那么可能就是磁盘出现了问题。

wKiom1nmLOfQVu1DAASkxXexB38908.png


iotop命令可以看到哪个进程在频繁读写磁盘,这个命令默认是没有的,需要安装:

安装命令:yum install -y iotop

  iotoptop命令类似,也是动态显示的界面,只不过iotop是用来查看进程对磁盘的使用率的,而top则是用来查看进程对CPU的使用率的:

wKiom1nmLPCTGzgRAAxnJXBiiNo529.png





10.7 free命令

  free是直接查看内存使用情况的命令,CentOS7CentOS6的显示信息不一样,CentOS7要更直观一些:

wKioL1nmKjvTmLDkAALZAEs7uYs401.png

第一行是列名,第二行是内存的使用情况,第三行是交换分区内存的使用情况。主要是关注第二行的信息,第一列是内存的总大小,单位是KB,第二列是使用的大小,第三列是剩余的大小,第四列是共享内存的大小。

  free -m把内存大小单位以MB来表示:

wKioL1nmKjyT1UFFAAK2UEmL68U019.png


free -h更直观的查看大小单位:

wKiom1nmLPPQWoigAAK2UGSGsEY738.png


从显示的信息可以看到一个现象,使用大小和剩余大小的值加起来不等于内存的总大小,这是因为Linux操作系统会把内存分配一些出来分给buff/cachebuff是缓冲,CPU计算完的数据要想存到磁盘里,会先进入到内存中,最后通过内存缓冲再存储到磁盘里。cache是缓存,磁盘的数据进入到CPU之前会先经过内存最后才到CPU,通过内存到CPU这一段就是缓存。

  示意图:

wKiom1nmLPjwWgaeAAsMKtF56vg162.png

缓存和缓冲的区别就是数据的流向不一样,前者是从磁盘通过内存到CPU,后者是从CPU通过内存到磁盘。

 

因为内存担任一个这么重要的角色,所以Linux操作系统才预留出一些内存空间分给buff/cache

所以计算total的值的公式是:

total=used+free+buff/cache

 

available列的值是free列加上buff/cache列的大小,表示剩余部分的内存,所以available才是内存真正的剩余大小。

 




10.8 ps命令

 

ps命令主要是用来查看进程的,汇报当前进程的一个快照,ps aux可以列出所有的进程:



wKioL1nmKkTwHNmIAAROAuhGPcw102.png

  这就类似于Windows系统的任务管理器,ps auxtop显示得有点像,只不过ps aux是静态的,top是动态的。

  第一列是进程的用户名称,第二列是进程的PID,在杀进程或者系统被黑了,发现有个恶意进程,这时可以通过这个进程的PID找到这个进程的所在目录,例如我要找一个PID912的进程所在目录:

wKioL1nmKkeTTAGiAAcVyYgU2W8015.png


第三列(%CPU)是CPU占用率,第四列(%MEM)是内存占用率,第五列(VSZ)是虚拟内存,第六列(RSS)是物理内存,第七列(TTY)表示进程在哪一个TTY上,第八列(STAT)是需要关注的一列,表示的是进程的状态,第九列(START)是进程的启动时间,第十列(TIME)表示进程运行了多长时间,第十一列(COMMAND)是命令名称,和top的最后一列是一样的。

STAT进程状态说明:

表示不能中断的进程,如果此状态的进程很多那么系统负载就会比较高。

表示run(运行中)状态的进程,在某一段时间内在使用着CPU的进程

表示sleep状态的进程,使用完CPU会暂停、休息一下,过一会就会激活,激活后就会继续使用CPU

表示暂停的进程,使用Ctrl+z暂停的进程

表示僵尸进程,系统运行过程中残留的一些无用的子进程

表示高优先级进程,就是能够优先使用CPU的进程

表示低优先级进程,与高优先级进程相反

表示内存中被锁了内存分页

表示主进程

表示多线程进程,线程和进程不一样,一个进程里可以有多个线程,并且线程之间的内存是可以共享的,而进程之间则是互相独立的内存不可以共享

  + 表示前台进程,会显示到终端上的进程,例如grepcatless

wKiom1nmLQCA-VKnAAfAN92qtuE494.png


  ps aux配合grep使用可以查看是否有某个进程,例如我要查看一下这些进程中是否有nginx进程:

wKioL1nmKkuR-SdeAAHMHzbdgwk421.png


ps -elf显示的结果和ps aux差不多,比ps aux多了几列数据:

wKiom1nmLQLAa-YUAASCBN2Vn9c660.png





10.9 查看网络状态

wKiom1nmLQbB9yCwAAcD83ZicwU157.png

netstat命令是用来查看网络状态的,Linux系统我们通常把它作为服务器的操作系统,服务器里有很多服务与客户端进行交互通信,也就意味着也要有监听端口、通信端口。那么netstat命令查看到的就是tcp/ip通信的一个状态。

没有端口监听就无法和其他机器通信,要想让其他人能够访问你服务器、网站,就需要有一个监听端口。

  netstat -lnp命令可以查看监听端口:

wKioL1nmKlWhD_wlAAufmPB7R_Q992.png


netstat -an 可以查看系统所有的网络连接状况:

wKiom1nmLRPCz693AA_ki3LdBzQ299.png


netstat -lntp只查看tcp的:

wKioL1nmKl-g-7I2AAOX2B387JA874.png


只查看udp的就加上u

wKiom1nmLRWBEobrAANbHIq6rG8752.png


结合awk命令可以查看所有状态的数量:

netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'

wKioL1nmKmCRUSwyAAHDduqxyfM012.png


ss -an也能够显示tcp/ip的连接状态和netstat是类似的命令:

wKiom1nmLRnhyqblAAcVRZAtVcA030.png


如果想查看指定的连接状态使用grep过滤即可:

wKioL1nmKmnRYbKvAA18r_tvpe4213.png


ss有一个缺点是不能显示进程的名字,netsta则可以显示进程的名字





10.10 Linux下抓包

wKiom1nmLSOw4HGmAAhnl1Fgajs434.png


tcpdump这个命令是用来抓包的,默认情况下这个命令是没有的,需要安装一下:

yum install -y tcpdump

  使用这个命令的时候最好是加上你网卡的名称,不然可能使用不了:

wKioL1nmKm6wLWunAAKgzJNv5Bc098.png

wKioL1nmKm6DVgi6AAFSEAIBMB4374.png

在命令的选选项中,加上-nn选项是表示显示IP地址和端口号,如果不加则会显示主机名和进程名,第一列显示的是当前时间,后面会有两个IP地址,第一个IP地址是源IP第二个则是目标IPIP地址后面跟的是数据包的相关信息,所以tcpdump这个命令主要就是看网络数据的流向。

 

使用port抓取指定端口的包,例如我要抓22端口的包:

wKiom1nmLSSjLHIpAADZ7aKQoaA100.png


还可以使用not port过滤掉某个端口的包,例如我过滤掉22端口的:

wKioL1nmKnHy4aKfAAWGSFJxkfo979.png


还可以加个条件,指定抓取某个IP的包:

wKiom1nmLYvQ6Qi7AAaBy1Vw_Ks442.png


加上-c选项可以指定抓取数据包的数量,例如指定只抓取20个数据包:

wKioL1nmKtmgqQ9KAAf_dvlI3zk560.png


加上-w还可以指定抓取出来的数据包存放到哪里去,例如我要放到tmp目录下的1.cap文件中:

wKioL1nmKtrwsmLgAAMvwxRRmS4014.png


  可以使用file命令查看这个文件的相关信息,不能使用cat直接查看,因为里面都是数据:

wKiom1nmLZCAvqrPAAHDdj9NK5Y444.png


不过使用tcpdump -r可以看到这个文件里的数据流信息:

wKioL1nmKt7TnFFQAAcvUVAb5yk199.png



tshark命令介绍:

tshark命令默认情况下这个命令是没有的,需要安装一个wireshark包,tsharktcpdump是类似的工具,也是用来抓包的:

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"

使用这个命令可以抓取监听的80端口的数据包,类似于web的访问日志:

wKiom1nmLZSij85kAAIZNaFEYeE234.png




本文转自 ZeroOne01 51CTO博客,原文链接:http://blog.51cto.com/zero01/1973593,如需转载请自行联系原作者

相关文章
|
19天前
|
Linux 网络性能优化 网络安全
Linux(openwrt)下iptables+tc工具实现网络流量限速控制(QoS)
通过以上步骤,您可以在Linux(OpenWrt)系统中使用iptables和tc工具实现网络流量限速控制(QoS)。这种方法灵活且功能强大,可以帮助管理员有效管理网络带宽,确保关键业务的网络性能。希望本文能够为您提供有价值的参考。
72 28
|
16天前
|
网络协议 Unix Linux
深入解析:Linux网络配置工具ifconfig与ip命令的全面对比
虽然 `ifconfig`作为一个经典的网络配置工具,简单易用,但其功能已经不能满足现代网络配置的需求。相比之下,`ip`命令不仅功能全面,而且提供了一致且简洁的语法,适用于各种网络配置场景。因此,在实际使用中,推荐逐步过渡到 `ip`命令,以更好地适应现代网络管理需求。
29 11
|
1月前
|
Ubuntu Linux 开发者
Ubuntu20.04搭建嵌入式linux网络加载内核、设备树和根文件系统
使用上述U-Boot命令配置并启动嵌入式设备。如果配置正确,设备将通过TFTP加载内核和设备树,并通过NFS挂载根文件系统。
88 15
|
2月前
|
数据采集 网络协议 JavaScript
网络爬虫性能提升:requests.Session的会话持久化策略
网络爬虫性能提升:requests.Session的会话持久化策略
|
2月前
|
Ubuntu Unix Linux
Linux网络文件系统NFS:配置与管理指南
NFS 是 Linux 系统中常用的网络文件系统协议,通过配置和管理 NFS,可以实现跨网络的文件共享。本文详细介绍了 NFS 的安装、配置、管理和常见问题的解决方法,希望对您的工作有所帮助。通过正确配置和优化 NFS,可以显著提高文件共享的效率和安全性。
221 7
|
3月前
|
监控 安全
公司上网监控:Mercury 在网络监控高级逻辑编程中的应用
在数字化办公环境中,公司对员工上网行为的监控至关重要。Mercury 作为一种强大的编程工具,展示了在公司上网监控领域的独特优势。本文介绍了使用 Mercury 实现网络连接监听、数据解析和日志记录的功能,帮助公司确保信息安全和工作效率。
121 51
|
2月前
|
运维 监控 安全
公司监控软件:SAS 数据分析引擎驱动网络异常精准检测
在数字化商业环境中,企业网络系统面临复杂威胁。SAS 数据分析引擎凭借高效处理能力,成为网络异常检测的关键技术。通过统计分析、时间序列分析等方法,SAS 帮助企业及时发现并处理异常流量,确保网络安全和业务连续性。
62 11
|
2月前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
215 7
|
3月前
|
域名解析 网络协议 安全

热门文章

最新文章