从w命令开始,系统状态命令哪个最强大?哪个你最熟悉?

最快的时间内,通过不同命令对Linux系统状态的把控,也是运维的基本功。今天一起来汇总一下,看看都有哪些。

1 使用w查看系统负载

相信所有的linux管理员最常用的命令就是这个 w 了,该命令显示的信息还是蛮丰富的。第一行从左面开始显示的信息依次为:时间,系统运行时间,登录用户数,平均负载。第二行开始以及下面所有的行,告诉我们的信息是,当前登录的都有哪些用户,以及他们是从哪里登录的等等。其实,在这些信息当中,我们最应该关注的应该是第一行中的 ‘load average:’ 后面的三个数值。

第一个数值表示1分钟内系统的平均负载值;第二个数值表示5分钟内系统的平均负载值;第三个数值表示15分钟系统的平均负载值。这个值的意义是,单位时间段内CPU活动进程数。当然这个值越大就说明服务器压力越大。一般情况下这个值只要不超过服务器的cpu数量就没有关系,如果服务器cpu数量为8,那么这个值若小于8,就说明当前服务器没有压力,否则就要关注一下了。那么如何查看服务器有几个cpu?

‘/proc/cpuinfo’ 这个文件记录了cpu的详细信息。目前市面上的服务器通常都是2颗4核cpu,在linux看来,它就是8个cpu。查看这个文件时则会显示8段类似的信息,而最后一段信息中processor : 后面跟的是 ‘7’ 所以查看当前系统有几个cpu,我们可以使用这个命令: grep -c 'processor' /proc/cpuinfo 而如何看几颗物理cpu呢,需要查看关键字 “physical id”, 由于此虚拟机只有一个cpu所以并未显示关于 “physical id” 的信息。

2 vmstat命令

上面讲的 w 查看的是系统整体上的负载,通过看那个数值可以知道当前系统有没有压力,但是具体是哪里(CPU, 内存,磁盘等)有压力就无法判断了。通过 vmstat 就可以知道具体是哪里有压力。vmstat命令打印的结果共分为6部分:procs, memory, swap, io, system, cpu. 请重点关注一下r b si so bi bo几列。

1)procs 显示进程相关信息

r :表示运行和等待cpu时间片的进程数,如果长期大于服务器cpu的个数,则说明cpu不够用了;

b :表示等待资源的进程数,比如等待I/O, 内存等,这列的值如果长时间大于1,则需要关注一下了;

2)memory 内存相关信息

swpd :表示切换到交换分区中的内存数量 ;

free :当前空闲的内存数量;

buff :缓冲大小,(即将写入磁盘的);

cache :缓存大小,(从磁盘中读取的);

3)swap 内存交换情况

si :由交换区写入到内存的数据量;

so :由内存写入到交换区的数据量;

4)io 磁盘使用情况

bi :从块设备读取数据的量(读磁盘);

bo: 从块设备写入数据的量(写磁盘);

5)system 显示采集间隔内发生的中断次数

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

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

6)CPU 显示cpu的使用状态

us :显示了用户下所花费 cpu 时间的百分比;

sy :显示系统花费cpu时间百分比;

id :表示cpu处于空闲状态的时间百分比;

wa :表示I/O等待所占用cpu时间百分比;

st :表示被偷走的cpu所占百分比(一般都为0,不用关注);

以上所介绍的各个参数中,常常会关注r列,b列,和wa列,三列代表的含义在上边说得已经很清楚。IO部分的bi以及bo也是要经常参考的对象。如果磁盘io压力很大时,这两列的数值会比较高。另外当si, so两列的数值比较高,并且在不断变化时,说明内存不够了,内存中的数据频繁交换到交换分区中,这往往对系统性能影响极大。

我们使用 vmstat 查看系统状态的时候,通常都是使用这样的形式来看的:

[root@localhost~]# vmstat 1 5

or

[root@localhost~]# vmstat 1

前面表示,每隔一秒钟打印一次状态,共打印5次,而后面的表示每隔1秒打印一次状态,一直打印,除非我们按 Ctrl + c 结束

3 top命令

这个命令用于动态监控进程所占系统资源,每隔3秒变一次。这个命令的特点是把占用系统资源(CPU,内存,磁盘IO等)最高的进程放到最前面。top命令打印出了很多信息,包括系统负载(loadaverage)、进程数(Tasks)、cpu使用情况、内存使用情况以及交换分区使用情况。其实上面这些内容可以通过其他命令来查看,所以用top重点查看的还是下面的进程使用系统资源详细状况。这部分东西反映的东西还是比较多的,不过需要关注的也就是几项:%CPU, %MEM, COMMAND,RES 这一项为进程所占内存大小,而 %MEM 为使用内存百分比。在 top 状态下,按 “shift + m”, 可以按照内存使用大小排序。按数字 ‘1’ 可以列出各颗cpu的使用状态。

另外,经常用的一个命令 top -bn1 它表示非动态打印系统资源使用情况,可以用在shell脚本中:

和 top 命令唯一的区别就是,它一次性全部把所有信息输出出来而非动态显示。

4 sar命令

sar 命令很强大,它可以监控系统所有资源状态,比如平均负载、网卡流量、磁盘状态、内存使用等等。它不同于其他系统状态监控工具的地方在于,它可以打印历史信息,可以显示当天从零点开始到当前时刻的系统状态信息。如果系统没有安装这个命令,请使用yum install -y sysstat命令安装。初次使用sar命令会报错,那是因为sar工具还没有生成相应的数据库文件(时时监控就不会了,因为不用去查询那个库文件)。它的数据库文件在 “/var/log/sa/” 目录下,默认保存一个月。

1)查看网卡流量历史sar -n DEV以及时时查看网卡流量sar -n DEV 1 5

IFACE这列表示设备名称,rxpck/s 表示每秒进入收取的包的数量,txpck/s 表示每秒发送出去的包的数量,rxbyt/s 表示每秒收取的数据量(单位Byte),txbyt/s表示每秒发送的数据量。后面几列不需要关注。如果有一天所管理的服务器丢包非常严重,那么就应该看一看这个网卡流量是否异常了,如果rxpck/s 那一列的数值大于4000,或者rxbyt/s那列大于5,000,000则很有可能是被攻击了,正常的服务器网卡流量不会高于这么多,除非是自己在拷贝数据。

另外也可以查看某一天的网卡流量历史,使用-f选项,后面跟文件名,如果系统格式Redhat或者CentOS那么sar的库文件一定是在/var/log/sa/目录下的。

sar -n DEV-f/var/log/sa/sa24

2)查看历史负载 sar -q

sar-q

这个命令有助于我们查看服务器在过去的某个时间的负载状况。

5 nload命令

sar虽然可以查看网卡流量,但不够直视,还有一个更好用的工具就是nload,系统没有默认安装,安装方法:yum install -y epel-release;yum install -y nload

(Author/aTree)

本文来自企鹅号 - Python运维圈媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java进阶架构师

闪电侠:2018.3 IntelliJ IDEA 重大更新:支持CPU火焰图,新增酷炫主题

就在上周,JetBrain 公司发布了 Java 集成开发环境 IntelliJ IDEA 最新版本 2018.3Beta,本篇文章,我将根据官方博客以及自己的...

1261
来自专栏王清培的专栏

ElasticSearch大数据分布式弹性搜索引擎使用

阅读目录: 背景 安装 查找、下载rpm包 、执行rpm包安装 配置elasticsearch专属账户和组 设置elasticsearch文件所有者 切换到el...

76210
来自专栏非著名程序员

可能是 Android 平台上最快的图片压缩框架

这款图片压缩框架,是 ghnor 作者在 Luban 的算法策略上,丰富了外围的 api,提供更多的可配参数,多线程压缩和不同细粒度的任务控制。 它不仅可以同步...

23810
来自专栏编程坑太多

最主流的SSM实现的通用权限管理系统

2292
来自专栏顶级程序员

Git 12 岁了,为你送上 12 个 Git 的使用技巧!

源 / 开源中国 使用这12个Git的诀窍与技巧来令你的版本控制经验更加有用。 Git,一个分布式版本控制系统,它已经成为了开源世界的源码控制默认工具,在4月...

3865
来自专栏云计算

Kubernetes的服务网格(第4部分):通过流量切换持续部署

除了服务发现,重要指标和TLS之外,linkerd还具有强大的路由语言,称为dtabs,可以用来改变请求的方式 - 甚至是单个请求 - 流经应用程序拓扑。在本文...

4427
来自专栏程序员互动联盟

浏览器开发系列第三篇:chromium代码目录结构

上两篇介绍了下载源码和编译源码,这次主要介绍chromium的源码目录结构,我也是通过源码和官网结合来跟大家说,如果有说的不准确的,欢迎交流。 另外...

5527
来自专栏HTML5学堂

2016,NodeJS干货来袭

HTML5学堂:随着时代的发展,JS的地位已经越来越高,NodeJS也是从萌芽开始,茁壮成长~这篇文章我们主要借助weinre这个NodeJS工具,讲解Node...

4077
来自专栏Ksher

Kubernetes的服务网格(第4部分):通过流量切换持续部署

翻译人:Ksher,该成员来自云+社区翻译社

3648
来自专栏Java技术栈

Git 12 岁了,送给你 12 个 Git 使用技巧!

2136

扫码关注云+社区

领取腾讯云代金券