想不想知道你的服务器到底在干什么?那么你要知道本文介绍的这些基本命令。一旦你熟悉掌握了这些命令,就为成为专业的 Linux系统管理员打下了基础。ios
你能够经过图形化用户界面(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文件。tcp
一旦进入到文件里面,找到initdefault这一行,将id:5:initdefault:改成id:3:initdefault:。编辑器
要是没有/etc/inittab文件,就建立一个,并添加id:3这一行。保存后退出。下次你启动进入服务器时,它会启动进入到运行级别3。若是你不想在进行这种更改后重启,也能够用命令init 3,当即设置服务器的运行级别。工具
一旦你的服务器在init 3下运行,就能够开始使用下列外壳程序,看看你的服务器里面出现了什么状况。性能
iostatspa
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系统管理员打下了基础。