想不想知道你的服务器究竟在干什么?那么你要知道本文介绍的这些根本指令。一旦你了解把握了这些指令,就为成为专业的 Linux体系办理员打下了根底。
你能够经过图形化用户界面(GUI)程序来获取这些外壳指令供给的很多信息,具体取决于运用哪一种Linux发行版。比方说,SUSE Linux就有一款超卓的、图形化装备和办理东西YaST,KDE的KDE System Guard相同很超卓。
不过,Linux办理员要理解的一个常理是:只需肯定必要时,才应该在服务器上运转GUI。那是因为,Linux GUI耗用体系资源,而这些资源本来能够更合理地用在其他地方。所以,虽然运用GUI程序很合适对服务器健康状况做一个根本的检查,可是假如你想知道究竟发生了什么,请封闭GUI,开端从Linux指令外壳运用这些东西。
这还意味着,只需在需求时,你才应该在服务器上敞开GUI;不必的时分,就及时关掉。为了保证功用最佳,Linux服务器应该在运转等级(runlevel)3下运转,这个运转等级彻底支撑网络和多个用户,可是在机器发动时,又不敞开GUI。假如你果然需求图形化桌面,总是能够从外壳提示符下运转startx,取得图形化桌面。
假如你的服务器发动后进入到图形化桌面,就需求更改这种状况。为此,进入到终端窗口,运用su指令切换到root用户,然后用你常用的编辑器翻开/etc/inittab文件。
一旦进入到文件里边,找到initdefault这一行,将id:5:initdefault:改为id:3:initdefault:。
要是没有/etc/inittab文件,就创立一个,并增加id:3这一行。保存后退出。下次你发动进入服务器时,它会发动进入到运转等级3。假如你不想在进行这种更改后重启,也能够用指令init 3,当即设置服务器的运转等级。
一旦你的服务器在init 3下运转,就能够开端运用下列外壳程序,看看你的服务器里边呈现了什么状况。
iostat
iostat 指令具体地显现了存储子体系方面的状况。你一般用iostat来监控存储子体系总体上运转状况怎么,并且在用户留意到服务器运转缓慢之前提前发现输入/输出缓慢的问题。信任我,你应该在用户发现这些问题之前先发现这些问题!
meminfo和free
meminfo为你具体显现了内存方面的状况。你一般能够运用另一个程序,比方cat和grep,来拜访meminfo的信息。比方说,cat /proc/meminfo为你具体显现了服务器的内存在任何一个时刻的运用状况。
假如想快速了解内存的概要信息,能够运用free指令。简而言之,free为你供给了概要信息;meminfo为你供给了具体信息。
mpstat
mpstat指令能够陈述多处理器服务器上每个可用处理器的活动状况。现在,因为多核处理器,这个指令适用于简直一切服务器。mpstat还能够陈述一切服务器上的处理器的均匀活动状况。它让你能够依照体系或依照处理器来显现总的处理器计算信息。这个概要信息能够在潜在的运用程序问题惹毛用户之前提示你留意。
netstat
netstat与ps相同,也是Linux办理员每天都运用的Linux东西。它显现了与网络有关的很多信息,比方套接口运用状况、路由、接口、协议、网络计算信息及更多信息。最常用的一些选项如下:
-a 显现套接口的一切信息
-r 显现路由信息
-i 显现网络接口的计算信息
-s 显现网络协议的计算信息
nmon
nmon是Nigel’s Monitor的简称,这款广受欢迎的开源东西用来监控Linux体系的功用。nmon能够监控多个子体系的功用信息,比方处理器运用率、内存运用率、运转行列的信息、磁盘输入/输出计算信息、网络输入/输出计算信息、内存分页活动和进程衡量目标。然后,你能够经过curses“图形化”界面,检查nmon的实时体系衡量成果。
想运转nmon,你能够从外壳来发动该东西。一旦发动,只需输入单键指令,就能够选择要监控的子体系。比方说,想取得处理器、内存和磁盘等方面的计算信息,只需别离输入c、m和d。也能够运用带-f标志的nmon,将功用计算信息保存到CSV文件中,以便日后剖析。
就日常的服务器监控而言,我觉得nmon是我的Linux体系办理东西包中最有用的一个程序。
pmap
pmap指令用来陈述服务器的进程所运用的内存量。你能够用这个东西来确认服务器上哪些进程被分配了内存、这些进程中有谁在很多运用内存。
ps和pstree
ps和pstree这两个指令是Linux体系办理员的两个得力助手。它们都能以列表的方式显现一切现在在运转的进程。ps能够告知你服务器的程序在运用多少的内存和处理器时刻。pstree显现的信息比较少,但侧重表明晰哪些进程是其他进程的子进程。把握了这些信息,你就能发现失控的进程,然后用Linux“不留活口”的kill指令,来停止这些进程。
sar
sar程序好比是体系监控东西范畴的瑞士军刀。sar指令实践上由三个程序组成:显现数据的sar、搜集数据的sa1以及保存数据的sa2。一旦装置结束,sar就能生成具体的概要信息,显现处理器运用率、内存分页活动、网络输入/输出和传输方面的计算信息、进程创立活动以及磁盘设备活动。sar和nmon的一大差异在于,前者更合适长时刻监控体系,我觉得nmon则比较合适协助我快速检查服务器的运转状况。
strace
strace 常常被以为是程序员的调试东西,但它的功用不仅仅用来调试。它能够截获和记载进程调用体系的状况。因此,它是一个有用的确诊、教育和调试东西。比方说,你能够运用strace来查出某个程序在发动时实践上运用哪个装备文件。
不过strace的确有一个缺点。它在检查某个进程时,该进程的功用会一泻千里。因此,只需在我已经有极端充沛的理由以为某个程序引起问题的状况下,才运用strace。
tcpdump
tcpdump是一个简略而牢靠的网络监控有用东西。其根本的协议剖析功用让你能够大略检查网络上的状况。不过想真实深入剖析网络方面的状况,你应该运用Wireshark(下面有介绍)。
top
top指令显现了活动进程方面的状况。默许状况下,它显现了服务器上运转的最耗费处理器的使命,并且每5秒钟就改写一次列表。你还能够按多个规范对进程进行分类,比方PID(进程ID);年限,最新的列在最前面;时刻,按累计时刻;以及驻留内存运用状况和自发动以来一向运用处理器的总时刻。我觉得它供给了一种快速而简易的办法,便于检查有没有进程开端行将失控、带来问题。
uptime
uptime可用来检查某台服务器运转了多久、有多少个用户登录上去。它还显现了服务器均匀负载的概要信息。负载的最佳值是1或更小,这意味着每个进程能够当即拜访处理器、不存在处理器周期丢掉的状况。
vmstat
大体上来说,你能够运用vmstat来监控虚拟内存方面的状况。Linux不断运用虚拟内存,以取得最佳的存储功用。
假如你的运用程序在占用过多的内存,你就会遇到频频被换出内存(page-out)的状况——即程序从内存进入到体系硬驱上的交流空间。你的服务器可能会进入到这个阶段:花在办理内存分页上的时刻比花在运转运用程序上的时刻还多——这种状况被称为颤动(thrashing)。当你的电脑颤动时,功用就一泻千里。Vmstat能够显现均匀的数据或实践样本,能够协助你发觉很多耗用内存的程序和进程,避免它们导致服务器运转起来好像蜗牛缓行。
Wireshark
Wireshark之前名为Ethereal(并且现在仍常常这么叫),是tcpdump的同类东西,不过它更为高档,具有先进得多的协议剖析和陈述功用。Wireshark既有GUI界面,又有外壳界面。假如你从事专业级的网络办理工作,只能运用ethereal。而假如你在运用Wireshark/ethereal,我强烈建议阅览Chris Sander所著的《有用数据包剖析》(Practical Packet Analysis),该书浅显易懂地介绍了怎么最充沛地使用这款有用程序。
本文仅仅从总体上概述了一些Linux最有价值的体系监控程序。不过,假如你熟练把握了这些程序,就为成为顶尖的 Linux体系办理员打下了根底。