全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

Linux系统常用监控命令,齐全

发布时间:2022-10-14 10:04:33
发布人:wjy

  1.CPU

Linux系统常用监控命令1

  2.内存

Linux系统常用监控命令2

  操作系统 IPC 共享内存/队列:

Linux系统常用监控命令3

  平时我们经常需要监控内存的使用状态,常用的命令有free、vmstat、top、dstat -m等。

  2.1 free

Linux系统常用监控命令4

  各行数据含义

  第一行Mem:

  total:内存总数7.7G,物理内存大小,就是机器实际的内存

  used:已使用内存6.2G,这个值包括了cached和应用程序实际使用的内存

  free:空闲的内存1.5G,未被使用的内存大小

  shared:共享内存的大小,17M

  buffers:被缓冲区占用的内存大小,33M

  cached:被缓存占用的内存大小,184M

  其中有:

Linux系统常用监控命令5

  Copy

  第二行-/+ buffers/cache,代表应用程序实际使用的内存:

  前一个值表示used - buffers/cached,表示应用程序实际使用的内存

  后一个值表示free + buffers/cached,表示理论上都可以被使用的内存

  可以看到,这两个值加起来也是total

  第三行swap,代表交换分区的使用情况:总量、使用的和未使用的

  缓存 cache

  cache代表缓存,当系统读取文件时,会先把数据从硬盘读到内存里,因为硬盘比内存慢很多,所以这个过程会很耗时。

  为了提高效率,Linux 会把读进来的文件在内存中缓存下来(局部性原理),即使程序结束,cache 也不会被自动释放。因此,当有程序进行大量的读文件操作时,就会发现内存使用率升高了。

  当其他程序需要使用内存时,Linux 会根据自己的缓存策略(例如 LRU)将这些没人使用的 cache 释放掉,给其他程序使用,当然也可以手动释放缓存:

Linux系统常用监控命令6

  缓冲区 buffer

  考虑内存写文件到硬盘的场景,因为硬盘太慢了,如果内存要等待数据写完了之后才继续后面的操作,效率会非常低,也会影响程序的运行速度,所以就有了缓冲区buffer。

  当内存需要写数据到硬盘中时会先放到 buffer 里面,内存很快把数据写到 buffer 中,可以继续其他工作,而硬盘可以在后台慢慢读出 buffer 中的数据并保存起来,这样就提高了读写的效率。

  例如把电脑中的文件拷贝到 U 盘时,如果文件特别大,有时会出现这样的情况:明明看到文件已经拷贝完,但系统还是会提示 U 盘正在使用中。这就是 buffer 的原因:拷贝程序虽然已经把数据放到 buffer 中,但是还没有全部写入到 U 盘中

  同样的,可以使用sync命令来手动flush buffer中的内容:

Linux系统常用监控命令7

  交换分区 swap

  交换分区swap是实现虚拟内存的重要概念。swap就是把硬盘上的一部分空间当作内存来使用,正在运行的程序会使用物理内存,把未使用的内存放到硬盘,叫做swap out。而把硬盘交换分区中的内存重新放到物理内存中,叫做swap in。

  交换分区可以在逻辑上扩大内存空间,但是也会拖慢系统速度,因为硬盘的读写速度很慢。Linux 系统会将不经常使用的内存放到交换分区中。

  cache 和 buffer 的区别

  cache:作为page cache的内存,是文件系统的缓存,在文件层面上的数据会缓存到page cache中

  buffer:作为buffer cache的内存,是磁盘块的缓存,直接对磁盘进行操作的数据会缓存到 buffer cache 中

  简单来说:page cache用来缓存文件数据,buffer cache用来缓存磁盘数据。在有文件系统的情况下,对文件操作,那么数据会缓存到page cache中。如果直接采用dd等工具对磁盘进行读写,那么数据会缓存到buffer cache中。

  2.2 vmstat

  vmstat (Virtual Memory Statics,虚拟内存统计) 是对系统的整体情况进行统计,包括内核进程、虚拟内存、磁盘、中断和 CPU 活动的统计信息:

Linux系统常用监控命令8

  procs

  r列:表示运行和等待 CPU 时间片的进程数,这个值如果长期大于 CPU 个数,就说明 CPU 资源不足,可以考虑增加 CPU

  b列:表示在等待资源的进程数,例如正在等待 I/O 或者内存交换

  memory

  swpn列:表示切换到交换分区的内存大小,如果swpd的值不为 0 或者比较大,且si、so的值长期为 0,那么这种情况暂时不会影响系统性能

  free列:当前空闲的物理内存大小

  buff列:表示buffers cache的内存大小,一般对块设备的读写才需要缓冲

  cache列:表示page cache的内存大小,一般作为文件系统的缓存,频繁访问的文件都会被 cached。如果 cache 值比较大,就说明 cached 文件数量较多。如果此时 I/O 中的bi比较小,就说明文件系统效率比较好

  swap

  si列:表示swap in,即内存由交换分区放入物理内存中

  so列:表示swap out,即将未使用的内存放到硬盘的交换分区中

  io

  bi列:表示从块设备读取的数据总量,即读磁盘,单位KB/s

  bo列:表示写入块设备的数据总量,即写磁盘,单位KB/s

  这里设置的bi+bo参考值为1000,如果超过1000,且wa值比较大,则表示系统磁盘 I/O 性能瓶颈

  system

  in列:表示在某一时间间隔中观察到的每秒设备中断数

  cs列:表示每秒产生的上下文切换次数

  上面这两个值越大,内核消耗的 CPU 时间就越多

  cpu

  us列:表示用户进程消耗 CPU 的时间百分比。us值比较高时,说明用户进程消耗的 CPU 时间多,如果长期大于 50%,可以考虑优化程序

  sy列:表示内核进程消耗 CPU 的时间百分比。sy值比较高时,说明内核消耗的 CPU 时间多,如果us+sy超过 80%,就说明 CPU 资源存在不足

  id列:表示 CPU 处在空闲状态的时间百分比

  wa列:表示 I/O Wait 所占 CPU 的时间百分比。wa值越高,说明 I/O Wait 越严重。如果wa值超过 20%,说明 I/O Wait 严重

  st列:表示 CPU Steal Time,针对虚拟机

  3.网络

  3.1 接口

Linux系统常用监控命令9

  3.2 端口

Linux系统常用监控命令10

  3.3 tcpdump

Linux系统常用监控命令11

  3.4 nethogs

Linux系统常用监控命令12

  监控各进程的网络流量

  4.I/O 性能

Linux系统常用监控命令13

  5.进程

Linux系统常用监控命令14

  5.1 top

  例如最常用的top命令:

Linux系统常用监控命令15

  1: 显示各个 CPU 的使用情况

  c: 显示进程完整路径

  H: 显示线程

  P: 排序 - CPU 使用率

  M: 排序 - 内存使用率

  R: 倒序

  Z: Change color mappings

  B: Disable/enable bold

  l: Toggle load avg

  t: Toggle task/cpu stats

  m: Toggle mem info

Linux系统常用监控命令16

  5.2 lsof

Linux系统常用监控命令17

  6.性能测试

Linux系统常用监控命令18

  7.用户

Linux系统常用监控命令19

  8.系统状态

Linux系统常用监控命令20

  9.硬件设备

Linux系统常用监控命令21

  10.文件系统

Linux系统常用监控命令22

  11.内核、中断

Linux系统常用监控命令23

  12.系统日志、内核日志

Linux系统常用监控命令24

  13.cron 定时任务

Linux系统常用监控命令25

  14.调试工具

  14.1 perf

  14.2 strace

  strace命令用于打印系统调用、信号:

Linux系统常用监控命令26

  14.3 ltrace

  ltrace命令用于打印动态链接库访问:

Linux系统常用监控命令27

  15.场景案例

  场景 1:连上服务器之后

Linux系统常用监控命令28

  场景 2:/proc 目录有哪些信息 cat /proc/...

Linux系统常用监控命令29

  场景 3:后台执行命令

Linux系统常用监控命令30

  一些命令

Linux系统常用监控命令31+

Linux系统常用监控命令32-

相关文章

什么是OA服务器?

什么是OA服务器?

2023-10-14
常用的渗透测试工具都有哪些?

常用的渗透测试工具都有哪些?

2023-10-14
大数据测试工程师需要具备哪些技能?

大数据测试工程师需要具备哪些技能?

2023-10-14
压力测试和性能测试有什么区别?

压力测试和性能测试有什么区别?

2023-10-14

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取