首页 > 代码库 > 十五、free、ps、netstat命令,以及抓包工具tcpdump和tshark

十五、free、ps、netstat命令,以及抓包工具tcpdump和tshark

free命令,查看内存。

#free -k 以kb显示

#free -m 以Mb显示

#free -g 以Gb显示

#free -h 以合适大小显示


free 命令输出的信息:

真正剩余的内存是free列的第二行

buffers和cached列的数字分别表示buffers和cached还有多少剩余

free列的一行数字+buffers列数字

- buffers/cache 反应的是被程序实实在在吃掉的内存

+ buffers/cache 反应的是可以挪用的内存总数


buffers和cached有什么区别

buffers是指高速缓冲区的大小,是一个空间大小的概念,运行程序常用的数据,在第一次运行时系统会把它们暂时缓存在一个高速的存储区域,以后再用时就直接从这个区域读取数据供程序使用,存取这些数据的介质,因其读写速度比硬盘和内存要快得多,所以,buffers的大小对电脑运行速度的影响是很大的,但这些数据重启电脑或关机后就会自动消失。而cached是指缓存的数据,是真正意义上的实在东西,例如你常用的程序,由于一些数据是这些程序运行经常要使用到的,系统就会把它们形成文件,缓存到一个特定的位置,下次你再运行该程序时,就会自动到缓存的位置读取数据供程序运行使用,存储这些数据的区域是在电脑的硬盘上,理论上讲读写速度是不变的,只是节省了寻找这些数据的时间而也,这样也可间接地提高了电脑的运行效率。


http://baike.sogou.com/v49107. ... %2598

缓存百科


ps命令,显示系统进程。

#ps -elf = #ps -aux

USER      PID %CPU %MEM    VSZ   RSS TTY   STAT START   TIME COMMAND

root      1090  0.0  0.0  12896   828 ?    S<sl 05:32   0:00 auditd

root      1112  0.0  0.1  37184  1560 ?    Sl   05:32   0:00 

dbus      1128  0.0  0.0   3032   896 ?    Ss   05:32   0:00 dbus-daemon --

root      1283  0.0  0.0   2012   492 tty4  Ss+  05:32   0:00 /sbin/mingetty 

root      1284  0.0  0.0   2620   864 ?    S<   05:32   0:00 /sbin/udevd -d

root      6769  1.0  0.1   6552  1076 pts/0  R+   07:01   0:00 ps -aux


PID:进程的id,在linux中内核管理进程就靠pid来识别和管理某一个进程。

   比如:#kill -9 1090(进程pid)

STAT:表示进程的状态,通常有一下几种:

D,不能中断的进程

R,正则运行的进程

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

T,已经终止或暂停的进程,

X,已经死掉的进程,(好像从不出现)

Z,僵尸进程,关不掉的垃圾进程,占系统很小的资源

<,高优先级进程

N,低优先级进程

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

s,主线程

l,多线程进程

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


#ps aux |grep -c mingetty ,用来查看某个进程的数量。

---------------------------------------------------------------

netstat 查看端口。

#netstat -lnp  查看当前系统所有监听端口的命令(显示数字端口)

#netstat -an   查看系统所有网络连接状况的命令是(显示数字端口)


TIME_WAIT 传输完成  链接保持着 

  ESTABLTSHED  已经建立链接正在通讯

  FIN_WAIT2  状态详情,可参考【TCP/IP 三次握手】

http://blog.csdn.net/whuslei/a ... 67471


netstat -an |grep 112.112.69.86:80  查看80端口 并发状态

netstat -an |grep 112.112.69.86:80 |grep -ic estab  统计链接(ESTABLTSHED)正在通讯的链接总数  

(前端  静态网页 2到3万 后端 有php mysql等 2000到3000 左右)


----------------------------------------------------------------

抓包工具tcpdump和tshark

查看某个网卡上都有哪些数据包。

#tcpdump -nn -i eth0

07:20:55.220948 IP 192.168.1.108.22 > 192.168.1.117.50000: Flags [P.], seq 396800:397072, ack 5761, win 359, length 272

07:20:55.221032 IP 192.168.1.108.22 > 192.168.1.117.50000: Flags [P.], seq 397072:397248, ack 5761, win 359, length 176


第三第四列,为,哪一个IP+port在连接哪一个IP+port。

-nn 让第三列和第四列显示成IP+端口的形式,如果不加则显示主机名+服务器名称

-i 后面跟设备名,只抓取该设备信息


#tcpdump -nn -i eth0 host 192.168.1.1.1 and port 80 -c 100 -w 1.cap

用host指定IP,port指定端口,-c指定包数量,-w 写入指定文件里。这样1.cap文件里是包的内容,而如果不加-w 直接在屏幕上显示的不是数据包而是数据流向。 这个1.cap可以下载到windows上,然后用wireeshark查看。

-s0 抓一个完整的包。


wireshark工具

#tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "htttp.request.uri" 


十五、free、ps、netstat命令,以及抓包工具tcpdump和tshark