linux 进程抓包工具,Linux日常管理技巧(2):free,ps,netstat命令和抓包工具

一、free命令

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

用法:

free [选项]

选项:

-b:以Byte为单位显示内存使用情况;

-k:以KB为单位显示内存使用情况;

-m:以MB为单位显示内存使用情况;

-o:不显示缓冲区调节列;

-s:持续观察内存使用状况;

-t:显示内存总和列;

-V:显示版本信息。

实例:

5ec05560104f608e7d539c0e475cff17.png

total:内存总数;

used:已经使用的内存数;

free:空闲的内存数;

shared:当前已经废弃不用;

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

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

二、ps命令

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

用法:

# ps [选项]

选项(参考):

http://man.linuxde.net/ps

由于ps命令能够支持的系统类型相当的多,所以选项多的离谱!

实例:

551e31003de0bc735478ef2a0b4efc9a.png

有的人喜欢用ps -elf 大同小异,显示的信息基本上是一样的。ps命令还有更多的用法,这里不多做介绍,因为你只要会用这个命令就足够了,如果需要其他用法,man一下或者网上搜索。下面说几个参数的意义。

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

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

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

R:正在运行中的进程

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

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

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

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

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

N:低优先级进程

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

s:主进程

l:多线程进程

+:代表在前台运行的进程

在日常工作中,ps命令经常配合管道符使用:

35448eeae7b99f4df4c1d42e3eaa9d59.png

三、netstat命令

netstat命令用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况。

用法:

# netsta [参数]

参数:

-a或--all:显示所有连线中的Socket;

-A或--:列出该网络类型连线中的相关地址;

-c或--continuous:持续列出网络状态;

-C或--cache:显示路由器配置的快取信息;

-e或--extend:显示网络其他相关信息;

-F或--fib:显示FIB;

-g或--groups:显示多重广播功能群组组员名单;

-h或--help:在线帮助;

-i或--interfaces:显示网络界面信息表单;

-l或--listening:显示监控中的服务器的Socket;

-M或--masquerade:显示伪装的网络连线;

-n或--numeric:直接使用ip地址,而不通过域名服务器;

-N或--netlink或--symbolic:显示网络硬件外围设备的符号连接名称;

-o或--timers:显示计时器;

-p或--programs:显示正在使用Socket的程序识别码和程序名称;

-r或--route:显示Routing Table;

-s或--statistice:显示网络工作信息统计表;

-t或--tcp:显示TCP传输协议的连线状况;

-u或--udp:显示UDP传输协议的连线状况;

-v或--verbose:显示指令执行过程;

-V或--version:显示版本信息;

-w或--raw:显示RAW传输协议的连线状况;

-x或--unix:此参数的效果和指定"-A unix"参数相同;

--ip或--inet:此参数的效果和指定"-A inet"参数相同。

参考: http://man.linuxde.net/netstat

实例:

ca93a25341f2e65163795cb70a22701e.png

netstat命令用来打印网络连接状况、系统所开放端口、路由表等信息。最常用的关于netstat的命令就是这个netstat -lnp (打印当前系统启动哪些端口)以及netstat -an (打印网络连接状况)这两个命令非常有用,请一定要记住。

c541074f22ed317d673caf44634e3909.png

上图最右侧为网络连接状态,了解下tcp三次握手,就很好理解了。

如果你所管理的服务器是一台提供web服务(80端口)的服务器,那么你就可以使用 netstat -an |grep 80 查看当前连接web服务的有哪些IP了。

补充:ss -an与netstat -an作用类似。

# netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}' //查看tcp各网络连接状态的数量

33e15c03f3dad21fc5e5b117a24a7638.png

四、抓包工具

1、tcpdump抓包工具。

有时候,也许你会有这样的需求,想看一下某个网卡上都有哪些数据包,尤其是当你初步判定你的服务器上有流量***。这时,使用抓包工具来抓一下数据包,就可以知道有哪些IP在***你了。

# tcpdump -nn -c 10 -i ens33 //抓取10次包指定ens33网卡,并显示ip和端口,不显示主机名和服务名称

0da118dbcb6dc607d30cd707a148109f.png

如果没有tcpdump 这个命令,需要用yum install -y tcpdump命令去安装一下。上例中第三列和第四列显示的信息为哪一个IP+port在连接哪一个IP+port,后面的信息是该数据包的相关信息,-nn参数是为了直接显示ip+端口号,需要关注的只是第三列以及第四列。-i 选项后面跟设备名称,如果你想抓ens33网卡的包,后面则要跟eens33。-nn选项的作用是让第三列和第四列显示成IP+端口号的形式,如果不加-nn则显示的是主机名+服务名称。

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

参考:http://man.linuxde.net/tcpdump

一些常用的tcpdump实例:

# 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/tset.cap //保存10次抓包到/tmp/test.cap

# tcpdump -r /tmp/test.cap //读取抓包文件

844c2f44ce22f6be3b468a7d3605ecdf.png

2、wireshark工具

# 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"

398ccd3e3afcef8b574729eeb9463e34.png

这类似与访问web日志,若服务器没有配置访问日志,可以临时使用该命令查看当前的web请求。

更多用法可参考:https://www.cnblogs.com/liun1994/p/6142505.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值