Linux中经常使用的服务器监控命令

若是你的Linux系统默认就是进入GUI,你能够调一调配置,让他默认进入runlevel 3。具体方法就是:html

  • 1 打开一个终端,su到root帐号mysql

  • 2 用你喜欢的编辑器(vi/emacs/...)打开/etc/inittab文件linux

  • 3 查找initdefault关键字,将“id:5:initdefault:”修改成“id:3:initdefault:”ios

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

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

[01    - iostat       ]  [02/03 - meminfo/free ]  [04    - mpstat       ]  [05    - netstat      ]  [06    - nmon         ]  [07    - pmap         ]  [08/09 - ps/pstree    ]  [10    - sar          ]  [11    - strace       ]  [12    - tcpdump      ]  [13    - top          ]  [14    - uptime       ]  [15    - vmstat       ]  [16    - wireshark    ]

[01 - iostat]shell

iostat命令显示的是你的存储系统的细节状态。你一般能够用这个命令去检测你的存储设备是否工做正常,api

彻底能够在用户抱怨服务器慢以前,经过这个命令发现系统IO方面的问题。服务器

以下能够看到iostat既能够显示CPU使用状况,也能够看到每一个磁盘的IO状况。网络

# iostat 1  Linux 2.6.32-220.4.1.el6.i686 (roclinux) 2012年12月22日 _i686_ (4 CPU)     avg-cpu: %user %nice %system %iowait %steal %idle  0.55 0.00 0.03 0.02 0.00 99.40     Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn  sdb 0.41 2.61 5.76 2558664 5653872  sda 0.24 0.80 4.12 784650 4038344

[02/03 - meminfo/free]

meminfo提供了很详细的内存使用情况。能够直接用cat命令查看:

cat /proc/meminfo

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

# free -m  total used free shared buffers cached  Mem: 1513 1429 83 0 343 836  -/+ buffers/cache: 249 1263  Swap: 0 0 0

[04 - mpstat]

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

另外,mpstat也会显示全部处理器的平均情况。

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

# mpstat -P ALL  Linux 2.6.32-220.4.1.el6.i686 (roclinux) 2012年12月22日 _i686_ (4 CPU)     17时46分35秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle  17时46分35秒 all 0.55 0.00 0.03 0.02 0.00 0.00 0.00 0.00 99.40  17时46分35秒 0 0.84 0.00 0.04 0.03 0.00 0.01 0.00 0.00 99.08  17时46分35秒 1 0.51 0.00 0.03 0.02 0.00 0.00 0.00 0.00 99.44  17时46分35秒 2 0.45 0.00 0.02 0.01 0.00 0.00 0.00 0.00 99.51  17时46分35秒 3 0.40 0.00 0.02 0.01 0.00 0.00 0.00 0.00 99.56     # mpstat -P 0  Linux 2.6.32-220.4.1.el6.i686 (roclinux) 2012年12月22日 _i686_ (4 CPU)     17时46分39秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle  17时46分39秒 0 0.84 0.00 0.04 0.03 0.00 0.01 0.00 0.00 99.08

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

  • 1 CPU:处理器编号,若是为all,则此行表示的是全部处理器的统计平均值

  • 2 %usr:用户态的CPU利用率

  • 3 %nice:具备调度优先级的用户态CPU利用率

  • 4 %sys:内核态CPU利用率(此值不包括响应硬件中断和软件中断的时间)

  • 5 %iowait:处理IO请求致使CPU处于IDLE状态的时间百分比

  • 6 %irq:CPU响应硬件中断的时间比率

  • 7 %soft:CPU响应软件中断的时间比率

  • 8 %steal:当虚拟机监控器在服务于其余虚拟处理器时,虚拟CPU的被动等待时间比率

  • 9 %guest:运行一个虚拟处理器所消耗的CPU时间比率

[05 - netstat]

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

一些经常使用的netstat选项包括:

  • -a : 显示全部socke信息

  • -r : 显示路由信息

  • -i : 显示网卡借口统计

  • -s : 显示网络协议统计

[06 - nmon]

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

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

你能够经过一个基于curses的类GUI界面来查看到上述信息。

nmon监控工具

[07 - pmap]

pmap命令能够显示进程占用的内存量。

你能够经过pmap找到那个占用内存量最多的进程。

以下就是nignx主进程所占用的内存状况:

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

[08/09 - ps/pstree]

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

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

pstree则会告诉咱们进程间的父子关系,以下即是mysql的一些父子关系信息:

# pstree -p 1829  mysqld_safe(1829)───mysqld(2307)─┬─{mysqld}(2309)                                   ├─{mysqld}(2310)                                   ├─{mysqld}(2311)                                   ├─{mysqld}(2312)                                   ├─{mysqld}(2313)                                   ├─{mysqld}(2314)                                   ├─{mysqld}(2315)                                   ├─{mysqld}(2316)                                   ├─{mysqld}(2317)                                   ├─{mysqld}(2318)                                   ├─{mysqld}(2320)                                   ├─{mysqld}(2321)                                   ├─{mysqld}(2322)                                   ├─{mysqld}(2323)                                   ├─{mysqld}(2325)                                   ├─{mysqld}(2544)                                   ├─{mysqld}(2548)                                   ├─{mysqld}(7912)                                   ├─{mysqld}(7914)                                   ├─{mysqld}(7916)                                   ├─{mysqld}(24689)                                   ├─{mysqld}(27329)                                   └─{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命令能够查看系统已经运行了多久,能够统计当前处于登录状态的用户数量,还能够显示当前服务器的负载状况。

# uptime  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命令即可以帮助人们及时发现此类问题,找出那个拖慢系统的元凶。

# vmstat 1  procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----  r b swpd free buff cache si so bi bo in cs us sy id wa st  2 0 0 57484 356864 861332 0 0 0 1 7 3 1 0 99 0 0  0 0 0 57468 356864 861360 0 0 0 0 336 145 6 1 94 0 0  0 0 0 57468 356864 861360 0 0 0 0 43 51 0 0 100 0 0  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》。

谢谢!

原文连接:http://outofmemory.cn/wr/?u=http%3A%2F%2Fwww.techug.com%2F

相关文章
相关标签/搜索