专栏首页编程从w命令开始,系统状态命令哪个最强大?哪个你最熟悉?

从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 条评论
登录 后参与评论

相关文章

  • Linux进阶命令和Shell编程

    1.高级文本命令——sed1.1sed简介 sed全称是:Stream EDitor,即流编辑器,是一个很好的文本处理工具,本身是一个管道命令,处理时,把当前处...

    企鹅号小编
  • 20条最最常用的Linux命令讲解

    推荐阅读 微服务: springboot系列教程学习 源码:Javaweb练手项目源码下载 调优:十五篇好文回顾 面试笔试:面试笔试整理系列 玩过Linux的人...

    企鹅号小编
  • 加拿大滑铁卢大学刘腾博士:平行增强学习及其无人驾驶应用

    平行增强学习 基于美国、欧盟和中国的自动驾驶技术路线图,以及从AlphaGo和AlphaGo Zero的成功上吸取的一些经验,我们发现深度学习或者机器学习在人工...

    企鹅号小编
  • Github 项目推荐 | Basel Face Model 2017 完全参数化人脸

    本软件可以从 Basel Face Model 2017 里生成完全参数化的人脸,论文链接: https://arxiv.org/abs/1712.01619 ...

    AI研习社
  • 开发注意事项

      能通过参数表或者配置文件实现的尽可能不要去写Hard Code,可减少后面代码的修改。

    _一级菜鸟
  • Xshell 和Xftp 得安装与使用以及常用得命令

    第一个就是切换目录,查看目录下列表文件,查看文件内容 主要是这三个其他的我们可以用

    斯文的程序
  • Linux-管线命令(pipe)

    管线命令以 | 作为界定符号,将前一个命令的执行标准输出(standard output)作为输入传给之后的命令。

    悠扬前奏
  • 性能测试 操作系统性能分析思路总结

    先查看系统整体负载(可通过w,uptime,top等命令查看),可以查看15分钟前,5分钟前,1分钟前到现在负载均值。

    授客
  • CVE-2019-0193:Apache Solr远程命令执行漏洞复现

    在Burp中发送以下POC即可执行命令弹出计算器,下面的<your_core_name> 需要替换为你获取到的 core 的 name(共两处)

    Timeline Sec
  • FTP协议的数据传输模型和相关命令说明

    上文说过,一旦FTP数据发送双方建立控制命令通道和数据传输通道后,双方就可以发送数据。在数据传输中,FTP协议又规定了三种模式,分别是流模式,块模式和压缩模式。

    望月从良

扫码关注云+社区

领取腾讯云代金券