您的位置:首页 > 理论基础 > 计算机网络

26.Linux系统管理技巧2--io监控,free,ps,netstat,tcpdump

2018-01-28 18:36 537 查看

七周二次课(1月23日)

10.6 监控io性能

10.7 free命令

10.8 ps命令

10.9 查看网络状态netstat

10.10 linux下抓包tcpdump

一、 监控io性能

1.iostat命令,该命令和sar共同存在于systat安装包中,用法如下:



也可以用 iostat 1 ,同vmstat一样表示一秒输出一次io状态



比较重要的命令是 iostat -x,当中的%util,指的是io等待的时间,即占用CPU的时间,是一个时间比,当达到50%,60%的时候说明磁盘的IO太差,很忙,也就有问题。



iotop命令,这里需要安装 yum install -y iotop
输入命令



二 free命令查看内存使用情况

free命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。



free -m,-g 分别以MB或GB为单位打印内存使用情况。



total:内存总数;tatal=used+free+buff/cache

used:已经使用的内存数;

free:空闲的内存数;

shared:当前已经废弃不用;

buff/cache:分配给buffer和cache的内存总共有多大;

available:系统可使用内存大小,avaliable包含free和buffer/cache剩余部分。

buff/cache 的区别
数据经过CPU计算,即将要写入磁盘,这时用的内存为buffer;CPU要计算时,需要把数据从磁盘中读出来,临时放在内存中,这部分内存就是cache。

另外也要注意swap的配置,如果占用的比较多说明内存不够使用了。

三、用ps命令查看系统进程

ps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。如下示例:



ps -elf 用法也是一样的

ps命令可以连同管道符一起使用

[root@localhost ~]# ps aux |grep mysql
[root@localhost ~]# ps aux |grep nginx




[ ] PID :进程的ID,这个ID很有用,在linux中内核管理进程就得靠pid来识别和管理某一个程,比如我想终止某一个进程,则用kill 进程的pid有时并不能杀掉,则需要加一个-9选项了kill -9 进程pid,这样做有点暴力,严重的时候回丢失数据,所以尽量不用。



在proc目录下存放了很多数字的目录,其实就是PID进程文件,可以用ls来查看



[ ] STAT :表示进程的状态,进程状态分为以下几种(不要求记住,但要大致了解)

D:不能中断的进程(通常为IO)



R(run):正在运行中的进程,其中包括了等待CPU的时间片的进程(某时间段内)

S(sleep):已经中断的进程,通常情况下,系统中大部分进程都是这个状态

T:已经停止或者暂停的进程,如果我们正在运行一个命令,比如说 sleep 10 如果我们按一下ctrl -z
让他暂停,那么我们用ps查看就会显示T这个状态



fg命令恢复刚在的暂停命令



vmstat占用cpu的时间非常短暂,



W:这个好像是说,从内核2.6xx 以后,表示为没有足够的内存页分配

X:已经死掉的进程(这个好像从来不会出现)

Z:僵尸进程,杀不掉,打不死的垃圾进程,占系统一小点资源,不过没有关系。如果太多,就有问题了。一般不会出现。

<:高优先级进程

N:低优先级进程

L:在内存中被锁了内存分页

s:主进程



l:多线程进程

+:代表在前台运行的进程,比如当前终端执行ps aux就是前台进程,前面出现的S+

四、用netstat命令查看网络状况

netstat命令用来打印网络连接状况、系统所开放端口、路由表等信息。

[root@localhost ~]# netstat -lnp //打印当前系统启动哪些端口
[root@localhost ~]# netstat -an //打印网络链接情况






netstat -lntp 只看出tcp的,不包含socket



netstat -lnup 只看udp



ss -an 和nestat异曲同工,不显示进程名字



ss -an | grep -i listen //LISTEN是大写





分享一个小技巧:
#netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'



ESTABLISHED 45 这是一个很重要的参数,必须在1000以内.客户端同时和你的服务器通信。

TCP/IP 三次握手。四次挥手过程,扩展知识



五、抓包工具

tcpdump工具
如果没有tcpdump 这个命令,需要用yum install -y tcpdump命令去安装一下。

[ ] -i 选项后面跟设备名称,如果你想抓ens33网卡的包,后面则要跟eens33。

[ ] -nn选项的作用是让第三列和第四列显示成IP+端口号的形式,如果不加-nn则显示的是主机名+服务名称。

[ ] -c选项,指定抓包数量。

[root@localhost ~]# tcpdump -nn -i ens33




# tcpdump -nn -i ens33 port 22           //只抓22端口的包
# tcpdump host 192.168.x.x   //抓取指定ip的包
# tcpdump -nn -i ens33 tcp and not port 22        //指定抓tcp的包,但是不要22端口的
# tcpdump -nn -i ens33 port 22 and port 53       //只抓22和53端口的包
# tcpdump -nn -i ens33 -c 10 -i ens33 -w /tmp/1.cap    //保存10次抓包到/tmp/1.cap,无法用cat查看
# tcpdump -r /tmp/test.cap  //读取抓包文件










2. wireshark工具
抓包命令是tshark,这条命令用于web服务器,将显示的是web访问日志,如果服务器没有配置访问日志,可以临时使用该命令查看胰腺癌当前服务器上的Web请求。要注意的是如果你的机器上没有开启Web服务,是不会显示任何内容的

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"


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  free ps netstat
相关文章推荐