当前位置: 首页 > 科技观察

你应该知道的16条Linux服务器监控命令

时间:2023-03-13 06:41:02 科技观察

在不同的Linux发行版中,会有不同的GUI程序可以显示各种系统信息。比如在SUSELinux发行版中,有很好的图形化配置以及KDE桌面环境中的管理工具YaST、KDE??SystemGuard也很不错。但是,对于一个Linux系统管理员来说,除非万不得已,否则他是不会在Linux服务器上运行这样一个GUI程序的,主要是因为GUI会占用大量的系统资源。因此,使用GUI工具通常是一个简单的调查。如果你真的想知道系统中到底发生了什么,那么请关闭你的GUI并快速进入Linux命令行的世界。如果要追求最佳性能,那么Linux服务器应该运行在runlevel3,即支持网络和多用户功能,但不支持GUI功能。如果确实需要GUI,可以在命令行输入startx进入GUI。如果你的Linux系统默认进入GUI,你可以调整配置,使其默认进入runlevel3。具体方法是:1打开一个终端,su到root账户2用你喜欢的编辑器(vi/emacs/...)打开/etc/inittab文件3找到initdefault关键字,把"id:5:initdefault:"改成"id:3:initdefault:"如果系统中没有/etc/inittab文件也没关系。直接创建此文件并添加新行“id:3”。这种情况下,如果再次重启服务器,会默认进入命令行状态。当然,如果你只是想暂时进入命令行状态,那么直接在终端输入“init3”即可。至此,我们的命令行已经准备就绪,我们可以开始通过强大的命令查看“服务器中发生了什么”:[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]iostat命令显示存储系统的详细状态。您通常可以使用此命令检查您的存储设备是否正常工作,并且可以使用此命令在用户抱怨服务器缓慢之前发现系统IO问题。正如您在下面看到的,iostat可以显示每个磁盘的CPU使用率和IO。#iostat1Linux2.6.32-220.4.1.el6.i686(roclinux)22Dec2012_i686_(4CPUs)avg-cpu:%user%nice%system%iowait%steal%idle0.550.000.030.020.0099.40设备:tpsblk_read/sBlk_wrtn/sBlk_readBlk_wrtnsdb0.412.615.7625586645653872sda0.240.804.127846504038344【02/03-meminfo/free提供了非常详细的内存使用情况】meminfo可以直接使用cat命令查看:cat/proc/meminfo当然meminfo包含的细节太多了,可以直接使用free命令查看内存概况。#free-mtotalusedfreesharedbufferscachedMem:15131429830343836-/+buffers/cache:2491263Swap:000[04-mpstat]mpstat在多处理器服务器上用于显示每个CPU的状态.此外,mpstat还会显示所有处理器的平均状态。您可以设置显示每个服务器的CPU统计信息,或每个进程的CPU统计信息。#mpstat-PALLLinux2.6.32-220.4.1.el6.i686(roclinux)Dec22,2012_i686_(4CPU)17:46:35CPU%usr%nice%sys%iowait%irq%Soft%STEAL%Gueest%Idle17.46minutes35secondsALL0.550.000.020.000.000.0099.4017:46:0.840.000.040.010.000.0099.0846minutes0.510.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.030.5:46:0.400.000.010.010.000.0099.56#MPSTAT-P0Linux2.32-220.4.1.el6.i686(roclinux)2012年12月22日_i686_(4CPU)17:46:39CPU%usr%nice%sys%iowait%irq%soft%steal%guest%idle17:46:3900.840.000.040.030.000.010.000.0099.08各字段含义简述如下:1CPU:处理器编号,如果是全部,这一行代表所有处理器的统计平均值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:显示所有socket信息-r:显示路由信息-i:显示网卡Excusestatistics-s:显示网络协议统计信息[06-nmon]nmon是Nigel'sMonitor的缩写,是一个著名的Linux系统性能监控工具。nmon可以查看处理器利用率、内存使用率、运行队列信息、磁盘IO统计、网络IO统计、分页统计等,可以通过基于curses的GUI界面查看以上信息。nmon监控工具[07-pmap]pmap命令可以显示进程占用的内存量。您可以使用pmap查找占用内存最多的进程。下面是nignx主??进程占用的内存:#pmap2395|head-n102395:nginx:masterprocess./sbin/nginx00110000240Kr-x--/lib/libgssapi_krb5.so.2.20014c0004K-----/lib/libgssapi_krb5.so.2.20014d0004Kr----/lib/libgssapi_krb5.so.2.20014e0004Krw---/lib/libgssapi_krb5.so.2.20014f00012Kr-x--/lib/libcom_err.so。2.1001520004Kr----/lib/libcom_err.so.2.1001530004Krw---/lib/libcom_err.so.2.10015400048Kr-x--/lib/libnss_files-2.12.so001600004Kr----/lib/libnss_files-2.12.so...b78e400020Krw---[anon]b78f30004Krw-s-/dev/zero(已删除)b78f40004Krw---[anon]bfeaa00084Krw---[堆栈]total7280K[08/09-ps/pstree]ps和pstree是Linux系统中的好兄弟,都是用来列出正在运行的进程列表的。ps告诉我们每个进程使用了??多少内存以及消耗了多少CPU时间。pstree会告诉我们进程之间的父子关系,下面是mysql的一些父子关系信息:#pstree-p1829mysqld_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命令可以查看系统运行了多长时间,统计当前登录用户数,显示当前服务器负载。#uptime18:35:17up11days,9:30,1user,loadaverage:0.00,0.00,0.00[15-vmstat]大多数情况下,可以使用vmstat命令查看系统的虚拟内存,因为Linux通常使用虚拟内存来获得更好的存储性能。如果你的程序占用了很多内存,系统会进行内存页交换,将程序从内存中移动到系统SWAP空间,也就是硬盘。如果系统内存页的换入和换出频率超过一个临界值,这种状态称为“Thrashing”。当系统处于抖动状态时,性能会急剧下降。vmstat命令可以帮助人们及时发现此类问题,找出拖慢系统的罪魁祸首。#vmstat1procs----------内存------------swap-------io------system-------cpu-----rbswpdfreebuffcachesisobiboincsussyidwast2005748435686486133200017310990000057468356864861?0000336145619400000574683568648613600000435100100000005746835686486116010060000[16-wireshark]Wireshark的前身叫做Ethereal。我们可以认为wireshark是tcpdump命令的老大哥,因为wireshark更专业,有更高级的协议分析和统计能力。Wireshark同时具有GUI界面和shell界面。如果你是高级网络管理员,那么你一定用过ethereal。如果您使用的是wireshark/ethereal,那么我建议您阅读ChrisSander的一本非常好的书《Practical Packet Analysis》。谢谢!原文链接:http://outofmemory.cn/wr/?u=http%3A%2F%2Fwww.techug.com%2F