在不同的Linux发行版中,会有不同的GUI程序可以显示各种系统信息,比如SUSE linux发行版中,就有非常棒的图形化的配置和管理工具YaST,KDE桌面环境里的KDE System Guard也很不错。

  然而,对于一名Linux系统管理员来说,除非迫不得已,否则不会在Linux服务器上去运行这样的GUI程序,主要还是因为GUI会占用很多的系统资源。所以呢,使用GUI工具一般都是做简单的排查,如果你真的想知道系统里真正发生了什么,那么请关掉你的GUI,快点进入Linux命令行的世界吧。

如果希望追求最佳性能,那么Linux服务器应该运行在runlevel 3级别,也就是支持网络和多用户功能,但不支持GUI功能。如果你真的需要GUI,那么可以在命令行输入startx进入GUI。

  如果你的Linux系统默认就是进入GUI,你可以调一调配置,让他默认进入runlevel 3。具体方法就是:

  1.   1 打开一个终端,suroot账号
  2.   2 用你喜欢的编辑器(vi/emacs/...)打开/etc/inittab文件
  3.   3 查找initdefault关键字,将“id:5:initdefault:”修改为“id:3:initdefault:”

  如果系统中根本就没有/etc/inittab文件的话,也没关系,直接创建这个文件,并添加新的一行“id:3”。这样的话,你再重启服务器,便会默认进入命令行状态。当然,如果你只想在临时进入命令行状态,那么直接在终端中输入“init 3”就好了。

  至此,我们的命令行准备好了,下面就可以开始通过强大的命令来查看“到底服务器里发生了什么”:

  1. [01 - iostat ]
  2. [02/03 - meminfo/free ]
  3. [04 - mpstat ]
  4. [05 - netstat ]
  5. [06 - nmon ]
  6. [07 - pmap ]
  7. [08/09 - ps/pstree ]
  8. [10 - sar ]
  9. [11 - strace ]
  10. [12 - tcpdump ]
  11. [13 - top ]
  12. [14 - uptime ]
  13. [15 - vmstat ]
  14. [16 - wireshark ]

  [01 - iostat]

  iostat命令显示的是你的存储系统的细节状态。你通常可以用这个命令去检测你的存储设备是否工作正常,

  完全可以在用户抱怨服务器慢之前,通过这个命令发现系统IO方面的问题。

  如下可以看到iostat既可以显示CPU使用情况,也可以看到每个磁盘的IO情况。

  1. # iostat 1
  2. Linux 2.6.32-220.4.1.el6.i686 (roclinux) 20121222 _i686_ (4 CPU)
  3.  
  4. avg-cpu: %user %nice %system %iowait %steal %idle
  5. 0.55 0.00 0.03 0.02 0.00 99.40
  6.  
  7. Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
  8. sdb 0.41 2.61 5.76 2558664 5653872
  9. sda 0.24 0.80 4.12 784650 4038344

  [02/03 - meminfo/free]

  meminfo提供了很详细的内存使用状况。可以直接用cat命令查看:

  1. cat /proc/meminfo

  当然meminfo里包含了太多细节,你可以直接使用free命令来查看有关内存的综述。

  1. # free -m
  2. total used free shared buffers cached
  3. Mem: 1513 1429 83 0 343 836
  4. -/+ buffers/cache: 249 1263
  5. Swap: 0 0 0

  [04 - mpstat]

  mpstat用在多处理器的服务器上,用来显示每一个CPU的状态。

  另外,mpstat也会显示所有处理器的平均状况。

  你可以设置显示每个服务器的CPU统计信息,或者每个处理的CPU统计信息。

  1. # mpstat -P ALL
  2. Linux 2.6.32-220.4.1.el6.i686 (roclinux) 20121222 _i686_ (4 CPU)
  3.  
  4. 174635 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
  5. 174635 all 0.55 0.00 0.03 0.02 0.00 0.00 0.00 0.00 99.40
  6. 174635 0 0.84 0.00 0.04 0.03 0.00 0.01 0.00 0.00 99.08
  7. 174635 1 0.51 0.00 0.03 0.02 0.00 0.00 0.00 0.00 99.44
  8. 174635 2 0.45 0.00 0.02 0.01 0.00 0.00 0.00 0.00 99.51
  9. 174635 3 0.40 0.00 0.02 0.01 0.00 0.00 0.00 0.00 99.56
  10.  
  11. # mpstat -P 0
  12. Linux 2.6.32-220.4.1.el6.i686 (roclinux) 20121222 _i686_ (4 CPU)
  13.  
  14. 174639 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
  15. 174639 0 0.84 0.00 0.04 0.03 0.00 0.01 0.00 0.00 99.08

  其中各个域的含义简述如下:

  1. 1 CPU:处理器编号,如果为all,则此行表示的是所有处理器的统计平均值
  2. 2 %usr:用户态的CPU利用率
  3. 3 %nice:具有调度优先级的用户态CPU利用率
  4. 4 %sys:内核态CPU利用率(此值不包括响应硬件中断和软件中断的时间)
  5. 5 %iowait:处理IO请求导致CPU处于IDLE状态的时间百分比
  6. 6 %irqCPU响应硬件中断的时间比率
  7. 7 %softCPU响应软件中断的时间比率
  8. 8 %steal:当虚拟机监控器在服务于其他虚拟处理器时,虚拟CPU的被动等待时间比率
  9. 9 %guest:运行一个虚拟处理器所消耗的CPU时间比率

  [05 - netstat]

  netstat命令,是Linux系统管理员几乎每天都会用到的命令(它已经逐步在被ss命令取代),他可以显示很多有关网络方面的信息,例如socket使用情况、路由情况、网卡情况、协议情况、网络流量统计等等。

  一些常用的netstat选项包括:

  1. -a : 显示所有socke信息
  2. -r : 显示路由信息
  3. -i : 显示网卡借口统计
  4. -s : 显示网络协议统计

  [06 - nmon]

  nmon是Nigel’s Monitor的缩写,它是一个很知名的监视Linux系统性能的工具。

  nmon可以查看到处理器利用率、内存使用率、运行队列信息、磁盘IO统计、网络IO统计、换页统计等。

  你可以通过一个基于curses的类GUI界面来查看到上述信息。

  nmon监控工具

  [07 - pmap]

  pmap命令可以显示进程占用的内存量。

  你可以通过pmap找到那个占用内存量最多的进程。

  如下就是nignx主进程所占用的内存情况:

  1. # pmap 2395|head -n 10
  2. 2395: nginx: master process ./sbin/nginx
  3. 00110000 240K r-x-- /lib/libgssapi_krb5.so.2.2
  4. 0014c000 4K ----- /lib/libgssapi_krb5.so.2.2
  5. 0014d000 4K r---- /lib/libgssapi_krb5.so.2.2
  6. 0014e000 4K rw--- /lib/libgssapi_krb5.so.2.2
  7. 0014f000 12K r-x-- /lib/libcom_err.so.2.1
  8. 00152000 4K r---- /lib/libcom_err.so.2.1
  9. 00153000 4K rw--- /lib/libcom_err.so.2.1
  10. 00154000 48K r-x-- /lib/libnss_files-2.12.so
  11. 00160000 4K r---- /lib/libnss_files-2.12.so
  12. ...
  13. b78e4000 20K rw--- [ anon ]
  14. b78f3000 4K rw-s- /dev/zero (deleted)
  15. b78f4000 4K rw--- [ anon ]
  16. bfeaa000 84K rw--- [ stack ]
  17. total 7280K

  [08/09 - ps/pstree]

  ps和pstree在Linux系统里是一对好兄弟,它们都是用来列出处于运行状态的进程的列表的。

  ps告诉我们每个进程使用的内存量以及所消耗的CPU时间。

  pstree则会告诉我们进程间的父子关系,如下便是MySQL的一些父子关系信息:

  1. # pstree -p 1829
  2. mysqld_safe(1829)───mysqld(2307)─┬─{mysqld}(2309)
  3. ├─{mysqld}(2310)
  4. ├─{mysqld}(2311)
  5. ├─{mysqld}(2312)
  6. ├─{mysqld}(2313)
  7. ├─{mysqld}(2314)
  8. ├─{mysqld}(2315)
  9. ├─{mysqld}(2316)
  10. ├─{mysqld}(2317)
  11. ├─{mysqld}(2318)
  12. ├─{mysqld}(2320)
  13. ├─{mysqld}(2321)
  14. ├─{mysqld}(2322)
  15. ├─{mysqld}(2323)
  16. ├─{mysqld}(2325)
  17. ├─{mysqld}(2544)
  18. ├─{mysqld}(2548)
  19. ├─{mysqld}(7912)
  20. ├─{mysqld}(7914)
  21. ├─{mysqld}(7916)
  22. ├─{mysqld}(24689)
  23. ├─{mysqld}(27329)
  24. └─{mysqld}(27331)

  [10 - sar]

  sar命令堪称系统监控工具里的瑞士军刀。

  sar命令实际上是由三个程序组成的,即sar(用于显示数据)、sa1(用于采集数据)和sa2(用于存储数据)。

  sar可以涵盖到CPU利用率信息、内存换页信息、网络IO传输信息、进程创建行为和存储设备行为。

  sar和nmon的最大区别在于,sar更适用于长期的系统监控,而nmon则更适用于快速查看信息。

  如果希望更详细的学习sar命令,可以阅读《sar访谈》-linux命令五分钟系列之二十九

  [11 - strace]

  starce经常被用来作为追查程序问题的工具,但他的功能远非如此。

  它可以解析和记录进程的系统调用行为,这使得strace成为了一个非常有用的诊断、调查和纠错工具。

  举例来说,你可以适用strace来追查到一个程序在启动之初所需加载的配置文件信息。

  当然,strace也有它自身的缺陷,那就是strace会严重拖慢调查对象(某个进程)的性能和运行速度。

  顺便推荐一篇非常好的strace的文章:《strace使用详解

  另外,如果你使用MAC,strace的替代品是truss。

  [12 - tcpdump]

  tcpdump是一个简单的、好用的网络监控工具。它的网络协议分析能力使得它能够看清网络中到底发生了什么,如果你希望更细节的调查的话,可以考虑适用功能更为强大的wireshark工具。

  tcpdump的系列教程“在这里”。

  [13 - top]

  top命令可以显示系统中的进程信息。默认情况下,top会按照CPU使用率从高到低来显示系统中的进程,并且每5秒刷新一次排行榜。

  当然,你也可以让top按照PID、进程寿命、CPU耗时、内存消耗等维度对进程进行排序。(我经常使用的是P和M快捷键,分别是按CPU利用率排序、按内存使用量排序)

  通过top命令,你可以很快的发现那些失去控制或不符合预期的进程。

  [14 - uptime]

  通过uptime命令可以查看系统已经运行了多久,可以统计当前处于登陆状态的用户数量,还可以显示当前服务器的负载情况。

  1. # uptime
  2. 18:35:17 up 11 days, 9:30, 1 user, load average: 0.00, 0.00, 0.00

  [15 - vmstat]

  大多数情况下,你可以使用vmstat命令去查看系统的虚拟内存情况,因为Linux通常会通过虚拟内存来获得更好的存储性能。

  如果你的程序占用了大量了内存,那么系统会进行内存页换出的动作,以便把程序从内存中移动到系统SWAP空间中,也就是硬盘中。

  如果系统的内存页的换入换出动作频度超过一个临界值,那么这种状态被叫做“Thrashing”。当系统处于thrashing状态时,性能会急剧下降。

  vmstat命令便可以帮助人们及时发现此类问题,找出那个拖慢系统的元凶。

  1. # vmstat 1
  2. procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
  3. r b swpd free buff cache si so bi bo in cs us sy id wa st
  4. 2 0 0 57484 356864 861332 0 0 0 1 7 3 1 0 99 0 0
  5. 0 0 0 57468 356864 861360 0 0 0 0 336 145 6 1 94 0 0
  6. 0 0 0 57468 356864 861360 0 0 0 0 43 51 0 0 100 0 0
  7. 0 0 0 57468 356864 861360 0 0 0 16 51 62 0 0 100 0 0

  [16 - wireshark]

  Wireshark的前身叫做Ethereal,我们可以认为wireshark是tcpdump命令的大师兄,因为wireshark会更为专业,也具有更高级的协议分析和统计能力。

  Wireshark同时具有GUI界面和shell借口。

  如果你是一位资深的网络管理员,那么你一定使用过ethereal。而如果你正在使用wireshark/ethereal,那么我推荐你阅读Chris Sander的一本非常好的书《Practical Packet Analysis》。

16个Linux服务器监控命令的更多相关文章

  1. [转载]你需要知道的 16 个 Linux 服务器监控命令

    转载自: 你需要知道的 16 个 Linux 服务器监控命令 如果你想知道你的服务器正在做干什么,你就需要了解一些基本的命令,一旦你精通了这些命令,那你就是一个 专业的 Linux 系统管理员. 有些 ...

  2. 你应该知道的16个Linux服务器监控命令

    在不同的Linux发行版中,会有不同的GUI程序可以显示各种系统信息,比如SUSE Linux发行版中,就有非常棒的图形化的配置和管理工具YaST,KDE桌面环境里的KDE System Guard也 ...

  3. 转载:你需要知道的16个Linux服务器监控命令

    源址:http://web.itivy.com/article-653-1.html 如果你想知道你的服务器正在做干什么,你就需要了解一些基本的命令,一旦你精通了这些命令,那你就是一个 专业的 Lin ...

  4. 16 个 Linux 服务器监控命令

    如果你想知道你的服务器正在做干什么,你就需要了解一些基本的命令,一旦你精通了这些命令,那你就是一个 专业的 Linux 系统管理员. 有些 Linux 发行版会提供 GUI 程序来进行系统的监控,例如 ...

  5. Linux 服务器 监控命令

    1 top top类似于windows下面的资源管理器.不仅能够从服务器整体上展示服务器的大致情况,还可以看到具体进程 耗费资源的情况. 展示内存.cpu.交换分区等信息 如上图: 第一行主要描述系统 ...

  6. 16个必须熟悉的linux服务器监控命令

    本原创文章属于<Linux大棚>博客. 博客地址为http://roclinux.cn. 文章作者为roc. == 原文:16 Linux Server Monitoring Comman ...

  7. 非常有用的15个Linux 服务器监控命令

    如果你想知道你的服务器正在做干什么,你就需要了解一些基本的命令,一旦你精通了这些命令,那你就是一个 专业的 Linux 系统管理员. 有些 Linux 发行版会提供 GUI 程序来进行系统的监控,例如 ...

  8. Linux中监控命令top命令使用方法详解

    收集了两篇关于介绍Linux中监控命令top命令的详细使用方法的文章.总的来说,top命令主要用来查看Linux系统的各个进程和系统资源占用情况,在监控Linux系统性能方面top显得非常有用,下面就 ...

  9. linux 服务器常用命令整理

    linux 服务器常用命令整理 目录 网络分析 - tcpdump \ telnet \ (netstat \ ss \ lsof) \ nload 网络传输 - scp \ rsync \ (rz ...

随机推荐

  1. 【CZY选讲·黑白染色】

    题目描述 给出平面上n 个点,试将他们黑白染色,要求染色后无法用一条直线把黑白完全分开. 随便输出一种方案. 数据范围 n<=100000 题解:       ①点数很多,但是可以发现至多需 ...

  2. vs修改快捷键

    https://jingyan.baidu.com/album/9158e0006e10d8a254122826.html?picindex=1 https://sanwen8.cn/p/114IrR ...

  3. 图表绘制工具--Matplotlib 3

    ''' [课程3.] 表格样式创建 表格视觉样式:Dataframe.style → 返回pandas.Styler对象的属性,具有格式化和显示Dataframe的有用方法 样式创建: ① Style ...

  4. webapp的favicon应该怎样组织代码

    处理过那么多index 页面了那么关于特别针对于此页的favicon是时候详细的总结一下了 它是网站的头像,它出现在浏览器的收藏夹中(标题的旁边) ,浏览器标签页的左上角,微信公众号的logo,保存网 ...

  5. HDU1536&&POJ2960 S-Nim(SG函数博弈)

    S-Nim Time Limit: 2000MS   Memory Limit: 65536KB   64bit IO Format: %I64d & %I64u Submit Status ...

  6. urllib url解析学习

    #!/usr/bin/env python # encoding: utf-8 from urllib.parse import * #urlparse:解析url分段 #urlsplit:类似url ...

  7. 基于UDT connect连接通信以及文件传输--服务端

    网上与UDT相关的资料不多,与UDT相关的源码例子更少.最近在接触UDT,也是因为缺少相关的资料,导致学习起来甚感痛苦.下面将我自己这两天弄出来的代码贴出来,希望对在寻找相关资料的童鞋有一定的帮助.与 ...

  8. Linux查看进程堆栈信息命令

    jps -lvm #查看进程IDjstack -l <进程ID> # 查看进程堆栈信息

  9. mogadm修改硬盘状态

    #查看主机序列mogadm host list #查看空间快满的分区 df -h#检查硬盘序列和状态ls -l /data/mogile_data/ #查看mogadm目录下软链接的目录对应的分区 # ...

  10. Selenium2+python自动化8-SeleniumBuilder辅助定位元素【转载】

    前言 福利来了,对于用火狐浏览器的小伙伴们,你还在为定位元素而烦恼嘛? 上古神器Selenium Builder来啦,哪里不会点哪里,妈妈再也不用担心我的定位元素问题啦!(但是也不是万能,基本上都能覆 ...