Linux 笔记 - 第十三章 Linux 系统日常管理之(一)系统状态监控
一、前言
如果你是一名 Linux 运维人员,最主要的工作是优化系统配置,使应用在系统上以最优的状态运行。系统运行状态主要包括:系统负载、内存状态、进程状态、CPU 负载等信息。
二、监控系统的状态
监控系统的状态主要包括系统负载和 CPU 的使用率。
2.1 w 查看当前系统的负载

需要特别关注的是第一行的 "load average:"后面的3个数值,第1个数值表示1分钟内系统的平均负载值,第2个数值表示5分钟内系统的平均负载值,第3个值表示15分钟内系统地平均负载值。这个值表示单位时间段内 CPU 的活动进程数,这个值越大就说明服务器压力越大。通常情况下,这个值只要不超过服务器的 CPU 数量就没有关系。
[root@ryan ~]# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 60
model name : Intel(R) Core(TM) i7-4710MQ CPU @ 2.50GHz
stepping : 3
microcode : 23
cpu MHz : 2494.259
cache size : 6144 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm ida arat epb xsaveopt pln pts dtherm fsgsbase bmi1 avx2 smep bmi2 invpcid
bogomips : 4988.51
clflush size : 64
cache_alignment : 64
address sizes : 42 bits physical, 48 bits virtual
power management:
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 60
model name : Intel(R) Core(TM) i7-4710MQ CPU @ 2.50GHz
stepping : 3
microcode : 23
cpu MHz : 2494.259
cache size : 6144 KB
physical id : 0
siblings : 2
core id : 1
cpu cores : 2
apicid : 1
initial apicid : 1
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm ida arat epb xsaveopt pln pts dtherm fsgsbase bmi1 avx2 smep bmi2 invpcid
bogomips : 4988.51
clflush size : 64
cache_alignment : 64
address sizes : 42 bits physical, 48 bits virtual
power management:
此处查看 processor 的数值,从 0 开始,得到处理器的个数。
也可以使用 uptime 命令,显示的内容为:使用 w 命令输出的第一行,从左到右即为:系统现在的时间,系统从上次开机到现在运行了多长时间,系统目前有多少登录用户,系统在1分钟内、5分钟内、15分钟内的平均负载。
[root@ryan ~]# uptime
19:00:29 up 91 days, 21:39, 1 user, load average: 0.11, 0.05, 0.05
2.2 vmstat 监控系统的状态
vmstat - Report virtual memory statistics,报告虚拟内存的统计信息,包含6个部分:procs、memory、swap、io、system 和 cpu。重点关注一下 r、b、si、so、bi 和 bo 这几列信息。
其中:
buff 表示缓冲区,即准备要写入磁盘的数据大小,buff 缓冲(cpu 处理完的数据 > 内存 (buff)> 磁盘);
cache 表示缓存区,即准备从磁盘中需要读取的数据大小,cache 缓存(磁盘 > 内存(cache) > cpu 处理数据)。
# vmstat 3
表示每3秒钟更新一次输出信息,循环输出,按 Ctrl + c 键结束。
# vmstat 3 5
表示每隔3秒更新一次输出信息,共输出5次后停止。

2.3 命令 iostat
显示 CPU 的统计信息和磁盘输入/输出的统计信息。
-c 选项:只显示 CPU 的使用情况;
-d 选项:只显示磁盘的使用情况;

2.4 top 显示进程锁占的系统资源
top 命令用于动态监控进程所占的系统资源,默认时间间隔:每隔3秒更新一次。
默认排序方式:按照 %CPU 降序排序,按 Shift + m 按照 %MEM 降序排序。
# top -d 5 表示设置每隔5秒更新一次输出信息;执行 top 命令后按数字1,可以查看每个 CPU 的使用状态,按 z 可彩色显示;
# top -c 将最后一列的命令显示为完整路径。
直接使用 top 命令如下:

使用 ,然后按 z,显示如下:

# top -bn1,表示非动态打印系统资源的使用情况:

最左侧显示进程 ID,即 PID,通过 PID 编号可以在 /proc/ 目录下面查到对应 PID 的目录,即系统内存的映射目录,进入后即可查询到对应进程的详细信息。

2.5 sar 监控系统状态
sar 命令很强大,它可以监控系统所有资源的状态。比如平均负载、网卡流量、磁盘状态、内存使用等。它可以打印历史信息,可以显示当天从零点开始到当前时刻的系统状态信息。列的单位为 Byte。
如果系统没有安装这个命令,请使用:yum install -y systat。它的数据库在 /var/log/sa 目录下。
查看网卡流量,以十分钟为间隔
sar -n DEV

如果想实时查看网卡流量,如:
# sar -n DEV 1 3
表示 1 秒显示一次,共显示3秒次后结束:

如果需要查看指定某一天的网卡流量历史,可以添加 -f 选项,后面跟文件名。
查看流量历史目录,ls -l /var/log/sa:

查看流量历史文件,sar -n DEV -f /var/log/sa/sa06:

查看历史负载
# sar -q
会显示历史负载,以 10 分钟为间隔:

sar -b 可以对磁盘I/O进行统计,sar -b 1 3 表示1秒钟统计一次,共统计3秒钟:

2.6 free 查看内存使用状况
free 命令可以查看当前系统的总内存大小以及使用内存的情况。默认单位为 KB,添加 -m 或者 -h 可以分别以 MB 或者合适的单位显示内存的使用容量。最后一行为 swap 交换分区大小,如果系统没有设置 swap,则不显示。如下:

以上图为例,当前系统总内存大小为 1906280KB,以及使用 154884KB,剩余 1751396KB。如果把 buffers 和 cached 考虑在内,实际剩余内存大小并不是 1751396KB,而是 1810784 KB,实际使用的内存也应该是 95496 KB,而不是 154884KB。
可以通过将 watch 和 free 相结合来动态监控内存状况:
在 watch 后面跟上需要运行的命令,watch 就会自动重复运行这个命令,默认2秒钟执行一次,并把执行的结果更新到屏幕上:
# watch -n 3 -d free

-n 指定重复执行的时间,-d 表示高亮显示变动。
2.7 ps 查看系统进程
常用的 ps 命令的参数组合为:
# ps aux

# ps -elf

可以看出,使用 # ps aux 时,不用加 "-" 符号,# ps -elf 比 # ps aux 在最左侧多了一列 父进程 id。
pgrep 命令通过进程名称从运行进程队列中查找进程,并显示查找到的进程id。常用的选项有 -lo 表示列出对应进程组中最小进程号和程序名,-ln 表示列出对应进程组中最大进程号和程序名。

2.8 netstat 查看网络状况
netstat 命令用来打印网络连接状况、系统所开放的端口、路由表等信息。
打印当前系统开放了哪些端口:
# netstat -lnp,仅显示监听状态的端口

打印网络连接状况:
# netstat -an,显示所有监听的端口和非监听状态的连接

注意:
从整体上看,netstat 的输出结果可以分为两个部分:
一个是 Active Internet connections,称为有源TCP连接,其中 "Recv-Q" 和 "Send-Q" 指的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。
另一个是 Active UNIX domain sockets,称为有源 Unix 域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。Proto显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名。
ss 命令用来显示处于活动状态的套接字信息。ss 命令可以用来获取 socket 统计信息,它可以显示和 netstat 类似的内容。但 ss 的优势在于它能够显示更多更详细的有关 TCP 和连接状态的信息,而且比 netstat 更快速更高效。

综上命令进行简单归类:
CPU 性能评估:vmstat 命令、sar 命令、iostat 命令、uptime 命令等;
内存性能评估:free 命令、vmstat 命令、sar -r 命令等;
磁盘 I/O 性能评估:sar -d 命令、iostat -d 命令、vmstat -d 命令等;
网络性能评估:netstat -I 命令、netstat -r 命令、sar -n 命令等;
Linux 笔记 - 第十三章 Linux 系统日常管理之(一)系统状态监控的更多相关文章
- Linux 笔记 - 第十三章 Linux 系统日常管理之(二)Linux 防火墙和任务计划
博客地址:http://www.moonxy.com 一.前言 Linux 下的的防火墙功能是非常丰富的,作为 Linux 系统工程师有必要了解一下.防火墙一般分为硬件防火墙和软件防火墙.但是,不管是 ...
- Linux 笔记 - 第十三章 Linux 系统日常管理之(四)Linux 中 rsync 工具和网络配置
博客地址:http://www.moonxy.com 一.前言 rsync 命令是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机间的文件,可以理解为 remote sync(远程同步) ...
- Linux 笔记 - 第十三章 Linux 系统日常管理之(三)Linux 系统日志和服务
博客地址:http://www.moonxy.com 一.前言 日志文件记录了系统每天发生的各种各样的事情,比如监测系统状况.排查问题等.作为系统运维人员可以通过日志来检查错误发生的原因,或者受到攻击 ...
- Linux 笔记 - 第二十三章 MySQL 主从复制配置
一.前言 MySQL Replication,也被称为主从复制.AB 复制.简单来说就是 A 和 B 两台服务器做主从后,在 A 服务器上写入数据,B 服务器上也会跟着写入输入,两者之间的数据是实时同 ...
- Linux 笔记 - 第五章 Linux 用户与用户组管理
博客地址:http://www.moonxy.com Linux 是一个多用户的操作系统,在日常的使用中,从安全角度考虑,应该尽量避免直接使用 root 用户登录,而使用普通用户. 1. 关于用户 u ...
- Linux 笔记 - 第十七章 Linux LVM 逻辑卷管理器
一.前言 在实际生产中,有时会遇到磁盘分区空间不足的情况,这时候就需要对磁盘进行扩容,普通情况下需要新加一块磁盘,重分区.格式化.数据复制.卸载旧分区.挂载新分区等繁琐的步骤,而且有可能造成数据的丢失 ...
- Linux 笔记 - 第六章 Linux 磁盘管理
博客地址:http://www.moonxy.com 一.前言 1.1 硬盘 硬盘一般分为 IDE 硬盘.SCSI 硬盘和 SATA 硬盘.在 Linux 中,IDE 接口的设备被称为 hd,SCSI ...
- Linux 笔记 - 第四章 Linux 文件和目录管理
博客地址:http://www.moonxy.com 1. 绝对路径和相对路径 绝对路径:由根目录 "/" 写起的.如:/usr/local/mysql 相对路径:不是由根目录 & ...
- centos Linux系统日常管理1 cpuinfo cpu核数 命令 w, vmstat, uptime ,top ,kill ,ps ,free,netstat ,sar, ulimit ,lsof ,pidof 第十四节课
centos Linux系统日常管理1 cpuinfo cpu核数 命令 w, vmstat, uptime ,top ,kill ,ps ,free,netstat ,sar, ulimit ...
随机推荐
- EXP查询合集提权后渗透必备
0x00 整理的一些后渗透提权需要用到的一些漏洞,后渗透提权的时候可以看一下目标机那些补丁没打,再进行下一步渗透提权. 0x01 CVE-2019-0803 [An elevation of priv ...
- Day4 chart基本属性分析
属性设置是基于chart实例的,所以我们必须先获取一个chart画板实例,获取方式: G2.Chart.创建 Chart 的方式如下: new G2.Chart({ container: {strin ...
- npm执行命令行报错
今天在学习react-router时候使用命令npm start 报了一个错误 npm ERR! missing script: start npm ERR! A complete log of th ...
- Python RPC 之 gRPC
gRPC 简介: gRPC 是一款高性能.开源的 RPC 框架,产自 Google,基于 ProtoBuf 序列化协议进行开发,支持多种语言(Golang.Python.Java等),本篇只介绍 Py ...
- 给定n个十六进制正整数,输出它们对应的八进制数。
问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n<=10). 接下来n行,每行一个由0~9.大写字母A~F组成的字符串,表示要转 ...
- net core 3.0 之Grpc新特性小试牛刀
相信微服务大家伙都有听说和知道,好处弊端咱也不多说了,Grpc算是一个比较全面的微服务框架,也得到微软的支持 总结下来就是,跨平台,可靠,通信快,扩展性强,网络消耗小,模板多语言通用 光说好处,没 ...
- VSCode 使用Settings Sync同步配置(最新版教程,非常简单)
VSCode 使用Settings Sync同步配置(最新版教程,非常简单) 之前无意中听到有人说,vsCode最大的缺点就是每次换个电脑或者临时去个新环境,就要配置一下各种插件,好不麻烦,以至于面试 ...
- poj3415_Common Substrings
题意 给定两个字符串,求长度大于等于k的公共子串数. 分析 将两个字符串中间加个特殊字符拼接,跑后缀数组. 将题目转化为对每一个后缀求\(\sum_{j=1}^{i-1}lcp(i,j)\),且后缀\ ...
- RabbitMQ的各个参数
简介 原文:https://blog.csdn.net/vbirdbest/article/details/78670550 本节主要讨论队列声明的各个参数 queueDeclare(String q ...
- 6090A一种手指笔
发明名称--一种手指笔 申请号 CN201821972396.6 申请日 2018.11.28 公开(公告)号 CN209224777U 公开(公告)日 2019.08.09 IPC分 ...