【分享纪实】运维最常用的20个命令(下)

教育 2017-10-16 18:35        

​​​在“微学堂”分享之后,大家反馈说不错,故仔细整理成像样的文章,分成“上、中、下”3篇,计划分三天发出。

这是最后一篇,干货继续。

iostat

iostat,用来显示 CPU 的统计信息以及整个系统、适配器、tty设备和硬盘的输入/输出信息。

首先,我们来看看iostat执行起来的样子:

可以看到,iostat的输出信息主要分为三大部分。

  • 第一部分:系统信息。包括了系统名称、内核版本信息以及架构信息等。
  • 第二部分:CPU信息阅读过前面top系列文章的同学,相信对这几个指标项并不陌生。
  • 第三部分:磁盘信息。这里展示出了本台服务器上各个存储设备的I/O情况,包括块的读写量和读写速度等。

当我们怀疑磁盘出现性能问题时,通常需要查看磁盘的各种信息。磁盘的工作状态如何?TPS  是多少?吞吐量有没有问题?我们需要通过命令把这些信息展示出来:

上面的命令显示了磁盘读写数据的情况,命令中的选项和参数有必要和大家解释一下:

  • -d选项:表示只显示磁盘的使用状态,指定该选项后,iostat 将只显示磁盘信息而不再显示 CPU 信息。
  • -k选项:表示使用统KB作为单位,比如  kB_read/s列的8.37表示的就是 8.37KB/s。
  • “1 ”参数:表示采样时间,本例为1  秒。
  • “3 ”参数:表示采样次数,本例为3  次。

这几个选项,应该算是使用最频繁的选项啦。至于iostat中的各个指标的具体含义,大家可以自己去探究。

sar

下面为大家介绍一位新朋友,它的名字叫作sar,它的脑子里装满了服务器系统性能的信息。你只要和它搞好关系,以后想获得任何这方面的信息,就都不用发愁了!

我们来看一下sar命令运行的样子:

其中,sar 2 3表示每2秒输出一次信息,共输出3次实时信息,再外加一行汇总的平均值,总共是4行信息。

sar命令支持多核CPU么

哈哈,完全没问题的,sar命令拥有一个-P选项(大写字母P ),就是专门用来展示多核处理器性能指标的。

当使用sar命令而没有设定-P选项时,sar会根据所有的CPU核信息给出一个汇总报告。

当使用-P ALL时,sar命令就会针对每一个CPU核都给出其具体性能信息,然后再给出一个总的性能信息。

比如,我这里有一个至强处理器的CPU,是八核的,看看-P选项的威力吧。

看到了吧,sar命令把每一个CPU核都编上了号(从0到7),并且依次展示了它们的各个性能指标。

除了cpu外,我还喜欢用sar来查看网络流量,用法是这样的:

​如果使用EDEV关键字,那么sar命令会针对网络设备汇报其失败情况,例如:

​好了,已经为大家介绍了sar的最常用的几种用法啦,大家可以在自己的Linux服务器上使用起来了!

ps

这次的主角,不是那款大名鼎鼎的图像设计软件Photoshop,而是Linux系统中的进程状态查看命令ps,即Process Status 。

如果你想查看你的服务器上有哪些进程,这些进程属于哪些用户,这些进程消耗了多少CPU资源,这些进程占据了多少内存资源,那么就快来一起学习ps命令吧。

下面我们就从实战出发,来学习ps的最常用用法。

​ps aux便是我们最常用的ps用法了。它可以展示出系统中所有进程的状态信息,非常便于管理员进行全局查看。

那么,aux到底代表什么含义呢?

  • a:显示各终端上的所有进程。
  • u:会展示进程所属用户名。
  • x:对于没有关联到终端上的进程,也展示出来。

有些同学可能还见过ps –aux的用法,输出结果和ps aux几乎一模一样,那么多一个减号、少一个减号,区别在哪里呢?

ps -aux,其实应该理解为:

[root@roclinux ~]# ps -a -u x

它的准确解释是:

  • -a 部分:显示所有当前终端的所有进程。
  • -u x 部分:显示用户名为“ x”的用户的所有进程。

假如系统中不存在用户名为“x ”的用户的话,ps就会把“ps -aux ”解释为“ps aux ”,这也就能解释为什么上例中ps aux和ps –aux的输出一模一样的原因了。

有同学会问,为什么会有这样的处理逻辑呢?为什么要有aux和-aux两种不同的表达格式呢?其实这是有历史原因的。

ps命令,是一个有故事的命令,由于历史原因,它其实拥有三种不同的书写格式:

  • BSD格式:选项前不需要加短横线-,几个选项可以组合在一起使用,如ps aux。
  • UNIX格式:选项前加短横线-,几个选项可以组合在一起使用,如ps -aux。
  • GNU长格式:选项前加双短横线--,如 ps --format。

在ps命令中,我们常用的格式是BSD格式和UNIX格式,两种格式没有好坏之分,只有帮派之别。

而我们想查看的信息,无论是通过BSD格式,还是UNIX格式,基本都可以实现,只是在信息丰富度上略有差异,如下面的例子。

​可以看到,ps aux和ps –eF展示的进程信息基本类似,那么-e和-F的作用是什么呢?

  • -e选项:显示全部的进程,而不仅仅是当前终端下的进程,还包括没有在终端运行的进程。
  • -F选项:显示详尽的进程信息。

通过上面的例子我们看到,大家只需选用自己熟悉的命令格式即可,哪种格式用得顺手就用哪种,不用苛求一定要采用哪一种而去否定另一种。

最后,我们给出ps命令输出列的解释,便于大家阅读和理解。

​至于ps如何以树状结构查看进程、如何控制输出列、如何查看线程等技巧,可以通过读书来学习。

lsof

lsof,即list open files,可以用来查看进程打开的文件、目录和套接字等一系列信息。

lsof 是Linux系统管理员经常使用的工具之一,建议大家使用root账户运行该命令,不然的话,可能会有不少信息无法显示出来。

lsof可以通过文件名来定位打开该文件的进程,方法是执行lsof filename,这样,就可以找到到底是谁在打开这个文件啦。

既然可以通过文件名定位进程,那么同理,文件描述符也应该是可以的才对。比如我们想找出所有打开标准错误输出的进程:

[root@roclinux ~]# lsof -d 3

工作中,还经常有这样的需求,那就是通过PID 查找打开的文件。

[roc@roclinux ~]$ sudo lsof -p 5619

​如果想查找用户getsmartoffer在系统中都打开了哪些文件,我们可以使用-u选项来实现:

[roc@roclinux ~]# sudo lsof -u getsmartoffer

除了查找文件之外,lsof还可以查看程序占用着哪些端口:

[root@roclinux ~]# lsof -i:22

上面的例子,可以查看端口22上都运行着哪些程序。

在书中,我们为大家准备了三个运维悬案,都是靠lsof来解决的:

  • (1)文件删除,但磁盘空间没有释放
  • (2)磁盘增长,但找不到幕后黑手
  • (3)端口被无故占用

大家如果有兴趣,可以继续进阶阅读。

fuser

lsof的强大功能,无论是在文件方面、网络方面,还是在侦查悬案方面,它的表现都超出了大家的预期。

但是比较遗憾的是,lsof命令并不是POSIX标准中规定的命令,所以如果深究的话,lsof命令在可移植性方面会稍差一些。而经常拿来与lsof命令作比较的fuser命令,则属于POSIX标准的命令集。

所以我们在本讲座的最后一篇文章中,和大家介绍一下fuser命令。可能有人会问“POSIX”是什么,我们就在这里小科普一下。

POSIX,是Portable Operating System Interface的缩写,中文称为可移植操作系统接口。它是一种有关操作系统的行业标准。 POSIX标准的职责是确保程序在源代码级别上的可移植性。

通俗地说,只要在程序开发过程中使用的是POSIX标准规定的API和命令,那么这个程序就应该可以在任何其他符合POSIX标准的操作系统上编译和执行。

科普之后,大家应该能够理解lsof和fuser在可移植性方面的区别了吧!

fuser命令在功能上和lsof命令有很多相似之处,它可以显示出磁盘上的文件、目录,甚至网络端口正在被什么程序使用,并可以展示出这些程序的详细信息。

我们先来看一个示例。

[root@roclinux ~]# fuser -v /home/roc

上述命令列出了所有正在打开/home/roc/这个目录(不含目录下的文件)的进程。

这和lsof功能是类似的,在端口方面,fuser也可以实现类似lsof的功能。

比如,你想看看都有哪些程序占用了本机的22端口,则可以通过下面的命令来实现:

​其实还有另一种写法,也是可以的:

​也就是说,上面的-n tcp22可以简写为22/tcp的形式。这里的tcp是协议类型。fuser中的协议类型有file(默认)、tcp和udp三种。你可以自由组合它们来查找你想要的信息。

最后的最后,我们给大家一个对比图,来展示lsof和fuser的异同所在:

​结尾

好了,所有的内容都已经介绍完成,上面的所有内容都来自我们写的新书,当然,上面讲的都是简略版,如果你想深入学习上面的20条命令的话,请购买我们写的新书。

​谢谢各位小伙伴捧场!

如果大家有任何命令方面的问题,可以通过我的新书《Linux大棚命令百篇》上下册来了解和研究。

《Linux大棚命令百篇 - 上》文件和文本篇,购买传送门:

​《Linux大棚命令百篇 - 下》网络和系统篇,购买传送门:

​新书已经可以在京东、当当、China-pub、淘宝上买到啦,搜索“命令百篇”或“Linux大棚”就可以啦!

最后,欢迎大家关注“Linux大棚”公众号,有技术问题或职业发展问题,欢迎大家找我交流:)

谢谢大家!​​​​

发表评论