查看系统分布root@cf0c6032ba2f:/#lsb_release-a没有可用的LSB模块DistributorID:Ubuntu描述:Ubuntu14.04.5LTSRelease:14.04Codename:trustytop(cpu)Cpu(s)thisline提供当前CPU运行状态的信息:Cpu(s):11.4%us,29.6%sy,0.0%ni,58.3%id,0.7%wa,0.0%hi,0.0%si,0.0%stus:用户CPU时间running非优雅用户进程占用的CPU时间百分比(优雅,英文“nicing”,指的是允许你根据其他进程改变优先级的进程)。sy:系统CPU时间CPU时间用于运行内核和内核进程的百分比。ni:GracefulCPUtime如果你改变了一些进程的优先级,这个指标可以告诉你它们占用CPU时间的百分比。id:CPU空闲时间这是您希望获得高价值的指标之一。它表示CPU空闲时间的比率。如果系统运行缓慢但该指标特别高,那么您可以确定高CPU负载不是问题的原因。wa:I/Owaiting这个数字表示等待执行I/O操作所花费的CPU时间的百分比。当您对慢速系统进行故障排除时,这是一个非常有价值的指标,因为如果它很低,您可以轻松排除磁盘或网络I/O问题。hi:HardwareinterruptsCPU处理硬件中断的时间百分比。si:软件中断CPU处理软件中断的时间百分比。st:elapsedtime如果你正在运行一个虚拟机,这个指标会告诉你在虚拟机中执行的其他任务上花费的CPU时间的百分比。通过CPU个数来判断Linux服务器CPU状态的依据是:coreid相同的CPU是同核的超线程。具有相同physicalid的CPU是同一个CPU封装的threads或者cores。显示物理CPU数量的命令如下:cat/proc/cpuinfo|grep“物理ID”|排序|独特|wc-l显示每个物理CPU的核心数(即核数)的命令如下:cat/proc/cpuinfo|grep“cpu核心”|uniq命令结果显示如下:cpucores :1显示逻辑CPU个数的命令如下:cat/proc/cpuinfo|grep"processor"wc-l命令的结果如下所示:4其实从这里可以看出,按理说应该有如下等式:物理CPU数×核数=核数logicalCPUs如果不相等,说明你的服务器CPU支持超线程技术。我们在配置服务器的应用时,应该以服务器的逻辑CPU数为准。uptime(平均负载)有时候我们会觉得系统响应很慢,但是找不到原因。这时候我们需要查看平均负载,看是否有大量进程在排队等候。特定时间间隔内运行队列中的平均进程数可以反映系统的繁忙程度,所以我们通常会在网站或系统变慢的第一时间查看系统负载,即平均CPU负载。我应该如何查看平均负载?最简单的命令是uptime,如下图:uptime命令显示结果如下:11:31:11up11days,19:01, 2users, loadaverage:0.02,0.01,0.00当前主流这些服务器都是双四核的,并且具有相当强大的CPU。在提供一般应用服务时,无需担心Linux系统的负载。这里需要注意的是loadaverage的输出值。一般这三个值的大小不能大于系统中逻辑CPU的个数。例如,系统在此输出中有4个逻辑CPU。如果loadaverage这三个值长期大于4,说明CPU很忙,负载高,可能会影响系统性能,但偶尔大于4,不要不用担心,一般不会影响系统性能。反之,如果loadaverage的输出值小于CPU个数,说明CPU还处于空闲状态,如本例输出,CPU相对空闲。这时候我们可以结合vmstat命令来判断我们的系统是不是太忙了。如果确定很忙,就要考虑是更换服务器还是增加CPU数量。总结如下:如果r经常大于3或4,id经常小于50,说明CPU负载过重。top(mem)Mem:1024176ktotal,997408kused,26768kfree,85520kbuffersSwap:1004052ktotal,4360kused,999692kfree,286040kcached第1行告诉我们有多少物理内存可用,有多少内存被占用,有多少内存是空闲的,有多少是缓存的。第2行为我们提供了类似的信息,交换存储和Linux文件缓存使用了多少RAM。要了解一个进程实际使用了多少RAM,您必须去除RAM中的文件缓存。正如您在示例代码中看到的,在使用的997408KBRAM中,文件缓存占用了286040KBRAM,因此这意味着实际只使用了711368KBRAM。判断您是否用完RAM的一个好方法是查看文件缓存。如果实际内存减去文件缓存的值很大,而且swap存储的值也很高,那么很有可能确实是内存有问题。free-m(memory)显示当前内存使用情况,m表示以M字节为单位显示内容,该命令只在Linux系统下有效,FreeBSD下没有该命令。命令显示结果如下:total used free shared buffers cachedMem: 3949 1397 2551 0 268 buffers/cache917-/+: 211 3737Swap: 8001 0 8001上面结果中各个参数的详细信息如下:total:内存总量。使用:使用的内存量。free:空闲内存的数量。shared:多个进程共享的内存总量。buffersbuffercache和cachedpagecache:磁盘缓存的大小。-buffers/cache:(已用)内存编号,即used-buffers-cached。+buffers/cache:(可用的)内存,即free+buffers+cached。由此可以得出可用内存的计算公式为availablememory=free+buffers+cached,即2551MB+268MB+917MB=3737MB注意上面等式两边的值不相等,不过这不要紧,-m参数其实是被一个整数值四舍五入了。如果你对这个操作的结果有疑问,可以试试看不带-m参数的free命令显示的结果,这样一目了然。可以看出-buffers/cache反映的是程序实际占用的内存,而+buffers/cache反映的是可以挪用的内存总量。vmstat(io)vmstat是一个比较全面的性能分析工具,通过它可以观察系统的进程状态、内存使用、虚拟内存使用、磁盘I/O、中断、上下文切换、CPU使用等性能信息,推荐精通此命令。procs----------内存--------------swap-------io------system------cpu---r b Swpd free buff cache cache si bi bo bo bo bibo in csussyIDWA2 0 0519024 747324606568 0 0 3 9 5 1027 568 02 0 02 0 0519664 747324606568001847 1244201763 01 0 01 0 0517296 747324606568 3201 3582 0 2842092 16173717474703?05154400515440 747324606568 0 0 0 1641620 718261757 0其中:(1)procsr:等待运行的进程数。b:处于不可中断睡眠状态的进程数。(2)memoryswpd:虚拟内存使用量(单位:KB)。free:空闲内存(单位:KB)。buff:用作缓存的内存量(单位:KB)。(3)swapsi:从磁盘交换到内存的页数(单位:KB/s)。so:从内存交换到磁盘的页数(单位:KB/s)。(4)iobi:发送到块设备的块数(单位:块/秒)。bo:从块设备接收到的块数(单位:块/秒)。(5)systemin:每秒的中断次数,包括时钟中断。cs:每秒环境(上下文)切换次数。(6)cpu按照CPU的总使用百分比显示。us:CPU使用时间。sy:CPU系统使用时间。id:空闲时间。在标准情况下,r和b的取值应该是:r<5,b≈0。如果user%+sys%<70%,说明系统性能好,如果user%+sys%>=85%以上,说明系统性能差,那么就要全面检查系统。其中:user%表示CPU处于用户态的时间百分比。sys%表示CPU处于系统模式的时间百分比。psauxf(processes)要查看系统上某个用户运行的所有进程,在ps命令后使用以下选项:a(forallusers)u(以面向用户的格式显示,或拥有每个进程的用户)x(不用进程控制tty或终端屏幕的“显示每个进程”的另一种方法)psaux注意“ps-aux”与“psaux”不同。POSIX和UNIX标准要求“ps-aux”打印用户名为“x”的用户的所有进程,以及打印将由-a选项选择的所有进程。如果用户名“x”不存在,ps将被解释为“psaux”并打印一条警告。这种行为是为了帮助转换旧的脚本和习惯。它很脆弱,即将发生变化,因此不应依赖它。要查看进程树,除了上一节中使用的a、u和x选项外,还要添加f(其名称来自ASCII艺术森林)选项。psauxfps-ef(process)psaux使用BSD格式显示结果。ps-ef使用SystemV格式的完整格式,显示为带完整路径的进程名。影响使用的一个区别是aux将截断命令列,而-ef不会。因此,当需要结合grep时,应该优先使用-ef命令,以免误判。操作。以下是它的重要参数,以及详细说明:-A:显示任何相关协议控制块的地址。主要用于调试。-a:显示所有套接字的状态。与服务器进程关联的套接字一般不显示。-i:显示自动配置接口的状态。在系统初始引导后配置的那些接口的状态不包括在输出中。-m:打印网络存储使用情况。-n:打印实际地址而不是解释地址或显示主机和网络名称等符号。-r:打印路由表。-faddress:family将打印具有给定名称的地址族的统计信息和控制块信息。到目前为止,它唯一支持的地址族是inet。-Iinterface:表示只打印给定名称的接口状态。-pprotocol-name:表示只打印给定名称的协议的统计信息和协议控制块信息。-s:打印每个协议的统计信息。-t:表示在输出显示中使用时间信息代替队列长度信息。有两个参数我们用得最多也最习惯,就是netstat-an,如下图:netstat-an|grep–vunixlsof(file)lsof(listopenfiles)是一个列出当前系统中打开文件的工具。在UNIX环境中,一切都以文件的形式存在。通过文件,不仅可以访问常规数据,还可以访问网络连接和硬件。所以像传输控制协议(TCP)和用户数据报协议(UDP)套接字等,系统在后台给应用程序分配一个文件描述符,不管文件的性质如何,文件描述符都会被应用程序使用应用。程序和底层操作系统之间的交互提供了一个通用接口。因为应用程序打开的文件的描述符列表提供了很多关于应用程序的信息,通过lsof工具查看这个列表对于系统监控和故障排除很有帮助。顺便说一句,这个工具最早出现在UNIX系统中,后来被移植到Linux平台上。-i参数在工作中用的最多,可以用来查看具体端口的情况。比如我可以用lsof-i:22查看哪些程序占用了22端口。fdisk-l(硬盘分区)查看硬盘和分区信息,如下:fdisk–l命令显示结果如下:Disk/dev/sda:160.0GB,160040803840bytes255heads,63sectors/track,19457cylindersUnits=16065的气缸512=8225280字节 设备boot start Endblocks System/dev/dev/dev/sda1 1 13 104391 1 13 104391 83 linux//dev/sda2 14 3200 25599577+linux/dev/sda3 3201 3582 3068415 82 linuxswap/solaris/solaris/dev/sda4 3583 19457 127515937+ 5 Extended/dev/sda5 3583 19457 127515906 83 Linux上面的结果表明这是一个160GB的服务器硬盘。df(harddiskspace)查看文件系统的磁盘空间使用情况,命令如下:df–h命令显示结果如下:24G5.9G 17G 26%/////da5 118G 8.8G 103G 8%/data/dead/dev/dev/sda1 99m 20M 75M 21%/boottmpfs 859M 0 859M 0%/dev/shmdu查看linux下(目录大小)系统,这是工作中经常遇到的。可以使用如下命令查看:du-sh目录名,如du-sh/data命令,显示结果如下:8.6G /data/查看是否有分区使用率(Use%)太高(比如超过90%),如果发现某个分区的空间快用完了,可以进入该分区的挂载点,使用如下命令查找文件或目录占用空间最多的,然后按照从大到小的顺序,就可以找出系统中占用空间最多的文件或目录空间中的前十个文件或目录:du-sh*|排序-hr|head-n10doc
