Linux系统监控常用命令

释放双眼,带上耳机,听听看~!

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 及以上版本。由于实验环境的权限限制并不能成功的展示该命令。此处仅做介绍

入门日记数据库

数据库服务运维(kibana数据可视化)

2020-4-30 9:32:45

入门日记运维DevOps

Docker教程

2020-5-6 9:35:25

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索