释放双眼,带上耳机,听听看~!
1.free
free 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。
$ free
(-buffers/cache) used 内存数:第一部分 Mem 行中的 used – buffers – cached
(+buffers/cache) free 内存数: 第一部分 Mem 行中的 free + buffers + cached
可见 -buffers/cache 反映的是被程序实实在在占据的内存,而 +buffers/cache 反映的是可以挪用的内存总数。
第三部分 Swap 表示硬盘上交换空间的使用情况。
以 MB 为单位显示内存的使用情况
$ free -m
显示汇总信息
$ free -t
2.ps
用于显示当前系统的进程状态。可以搭配 kill 指令随时中断、删除不必要的程序。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。(在第一周的进程与工作中有详细介绍。)
3.pstree
pstree 能将当前的执行程序以树状结构显示,清楚地表达程序间的产生关系。
$ pstree
显示当前所有进程的进程名和进程 id
显示所有进程的详细信息,遇到相同的进程名可以压缩显示。
$ pstree -a
4.top
top 用于实时地显示 Linux 系统当前进程的运行情况,并按一定的顺序显示所有正在运行而且处于活动状态的进程,而且会实时更新显示结果。
$ top
显示的详细信息可参看第一周的 Linux 进程与工作中的详细介绍,与其使用方法。另外也可以使用 man 来查看 top 的详细说明:
$ man top
5.htop
htop 是一个高级的交互式的实时 Linux 进程监控工具。 它和 top 命令十分相似,但是它具有更丰富的特性,例如:用户可以友好地管理进程,使用快捷键,通过横向和纵向的方式显示进程等等。 htop 是一个第三方工具,所以我们需要先安装它。
$ sudo apt-get update
$ sudo apt-get install htop
$ htop
左上角: CPU 负载(因为我们是 4 核 CPU,所以这里有 4 行),内存消耗,交换空间的使用情况。
右上角:
第一行:总进程数,线程数,正在运行的进程数。
第二行:和 top 命令中的 load average 一样,也是代表的 1,5,15 分钟内 CPU 的平均负载。
第三行:从系统启动起到当前的运行总时间。
下方的列表代表的是当前进程的运行情况。
底部显示的是一些快捷键,可以很方便对进程进行排序,搜索,杀掉等操作。同样可以使用 man htop 查看它的帮助文档。
6.netstat
netstat 命令可以显示 linux 中当前详细的网络状态信息,包括所有的 TCP 的连接状态。我们在第 3 周网络常用命令中有介绍。
显示路由表
$ netstat -r
显示所有网卡列表
$ netstat -i
显示所有的 Socket 信息与连接状态
netstat -a
显示每个协议的统计信息
$ netstat -s
筛选监控中的服务器端口
$ netstat -lunat
7.tcpdump
tcpdump 是使用最广泛的网络包分析程序之一,它用于捕捉本机指定条件下的 TCP/IP 包。(在第 3 周的网络常用命令中有介绍。)
如果没有安装,就使用如下命令先安装一下:
$ sudo apt-get install tcpdump
可以使用如下命令查看 tcpdump 的帮助:
$ tcpdump -h 或者 $ man tcpdump
$ sudo tcpdump
# 直接启动 tcpdump 将监视网络接口上所有流过的数据包。
捕捉到的包信息会及时输出至终端,在长期有流量的情况下输出结果会刷屏,按 ctrl + c 可结束数据包的捕捉。
tcpdump 的过滤器很强大,从指定 IP、端口、协议等等来过滤,例如:
监控指定网络接口的数据包:
#抓取 eth0 网络接口的包
$ sudo tcpdump -i eth0
设置只抓取 10 个数据包:
$ sudo tcpdump -c 10
监控指定主机的数据包
先用 netstat 来看一下当前网络状态
$ netstat -lunat
利用前面输出中显示的那两个 ip 地址来实践(注意,你自己的输出结果和截图的可能不相同,根据你自己的输出结果来实验。)
我们这里就来捕获主机 192.168.42.6 与主机 192.168.42.2 之间的通信
$ sudo tcpdump host 192.168.42.6 and 192.168.42.2 |less
输出结果很多,可以使用 less 通过翻页键查看上下页的内容
还可以捕获和实验楼之间的通信,我们用浏览器打开实验楼的地址 www.wanneng.com ,然后再运行 netstat -lunat
另外它还可以使用 or ,not(或者 ! )
#主机 192.168.42.6 或者主机 192.168.42.2 收到和发出的所有数据包
$ sudo tcpdump host 192.168.42.6 or 192.168.42.2
#主机 192.168.42.6 和除了主机 192.168.42.2 之外的所有主机通信的数据包
$ sudo tcpdump host 192.168.42.6 and not 192.168.42.2 或者 $ sudo tcpdump host 192.168.42.6 and ! 192.168.42.2
监控指定端口的数据包
$ sudo tcpdump port 5901
8.iftop
iftop 是一个实时流量监控工具。iftop 监控的是网络的使用情况,而 top 监控的是 CPU 的使用情况。iftop 监控一个选定的接口并且显示两台主机之间当前宽带的使用情况。
$ sudo apt-get install iftop
$ sudo iftop
9.traceroute
traceroute 命令用于追踪数据包在网络上的传输时的全部路径,它通过发送小的数据包(默认是 40 字节)到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备 traceroute 要测 3 次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其 ip 地址。
先安装:
$ sudo apt-get install traceroute
例如追踪到 www.wanneng.com 的路由及速度
$ traceroute www.wanneng.com
记录按序列号从 1 开始,每个记录就是一跳 ,每跳表示一个网关,我们看到每行有三个时间,单位是 ms,这是探测数据包向每个网关发送三个数据包后,网关响应后返回的时间。用这三个时间来表示到达这个结点的网络速度。
我们会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了 ICMP 的返回信息,所以我们得不到什么相关的数据包返回数据。
把跳数设置为 8 次
$ traceroute -m 8 www.wanneng.com
显示 IP 地址,不查主机名
$ traceroute -n www.wanneng.com
有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。如果某台 DNS 出现问题时,不能解析主机名、域名时,也会有延时长的现象。可以加 -n 参数来避免 DNS 解析,以 IP 格式输出数据。
探测包个数设为 4
$ traceroute -q 4 www.wanneng.com
10.mtr
mtr 是 Linux 中一个判断网络连通性的工具。一般 ping 命令可以用来判断丢包率,traceroute 命令可以用来追踪路由,而 mtr 命令结合了 ping,traceroute,nslookup 的相关特性可以用来判断网络的连通性。(在第 3 周的网络常用命令中有介绍。)
$ sudo apt-get install mtr
$ mtr -r www.wanneng.com
11.vmstat
vmstat 是 Virtual Memeory Statistics(虚拟内存统计)的缩写,命令用于显示虚拟内存、内核线程、磁盘、系统进程、I/O 块、中断、CPU 活动等的统计信息。
显示磁盘信息
除了 -d 选项 ,它还有一些其他的选项:
每 2 秒显示一次系统内存的统计信息
$ vmstat 2
$ vmstat 2 3
12. df
df 命令用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为 KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
$ df
显示所有文件系统的磁盘使用情况
自动转换单位来显示,提高可读性
$ df -h
它还有一些其他的选项:
13.iotop
iotop 是一个用来监视磁盘 I/O 使用状况的 top 类工具,可监测到哪一个程序使用的磁盘 IO 的信息,在查找具体进程和大量使用磁盘读写进程的时候,这个工具就非常有用。 这个命令只有在 kernel v2.6.20 及以后的版本中才有,python 版本需要 python2.7 及以上版本。由于实验环境的权限限制并不能成功的展示该命令。此处仅做介绍