SlideShare a Scribd company logo
管理员必备的 20 个 Linux 系统监控工具
需要监控 Linux 服务器系统性能吗?尝试下面这些系统内置或附件的工具吧。大多数 Linux 发行版本都装备了大
量的监控工具。这些工具提供了能用 作取得相关信息和系统活动的量度指标。你能使用这些工具发现造成性能问
题可能原因。此次讨论到的工具只是分析和调试服务器下面问题时最基本工具中的一部 分。

1.找出瓶颈




2.硬盘(存储)瓶颈




3.CPU 及内存瓶颈




4.网络瓶颈




#1: top – 进程活动

top 提供一个当前运行系统实时动态的视图,也就是正在运行进程。在默认情况下,显示系统中 CPU 使用率最高
的任务,并每 5 秒钟刷新一次。




图 01.Linux top 命令
常用热键

热键
用途

t
显示摘要信息开关.

m
显示内存信息开关.

A
分类显示系统不同资源的使用大户。有助于快速识别系统中资源消耗多的任务。

f
添加删除所要显示栏位.

o
调整所要显示栏位的顺序.

r
调整一个正在运行的进程 Nice 值.

k
结束一个正在运行的进程.

z
彩色/黑白显示开关




#2:vmstat -系统活动、硬件及系统信息

使用 vmstat 命令可以得到关于进程、内存、内存分页、堵塞 IO、traps 及 CPU 活动的信息。

# vmstat 3

输出样例:
显示内存使用详细信息

# vmstat -m

显示内存活动/不活动的信息

# vmstat -a

w – 显示谁已登录,他们正在做什么?

w 命令显示系统当前用户及其运行进程的信息。

# w username

# w vivek

输出样例:

17:58:47 up 5 days, 20:28, 2 users, load average: 0.36, 0.26, 0.24

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

root pts/0 10.1.3.145 14:55 5.00s 0.04s 0.02s vim /etc/resolv.conf

root pts/1 10.1.3.145 17:43 0.00s 0.03s 0.00s w




uptime – 告诉系统已经运行了多久?

uptime 命令过去只显示系统运行多久。现在,可以显示系统运行多久、当前有多少的用户登录、在过去的
1,5,15 分钟里平均负载时多少。

# uptime

输入样例:

18:02:41 up 41 days, 23:42, 1 user, load average: 0.00, 0.00, 0.00




1 可以被认为是最优的负载值。负载是会随着系统不同改变得。单 CPU 系统 1-3 和 SMP 系统 6-10 都是可能接受
的。




ps – 显示进程
ps 命令显示当前运行进程的快照。使用-A 或-e 显示所有进程。

# ps -A

输出样例:

PID TTY TIME CMD

1 ? 00:00:02 init

2 ? 00:00:02 migration/0

3 ? 00:00:01 ksoftirqd/0

4 ? 00:00:00 watchdog/0

5 ? 00:00:00 migration/1

6 ? 00:00:15 ksoftirqd/1

4885 tty1 00:00:00 mingetty

4886 tty2 00:00:00 mingetty

4887 tty3 00:00:00 mingetty

4888 tty4 00:00:00 mingetty

4891 tty5 00:00:00 mingetty

4892 tty6 00:00:00 mingetty

4893 ttyS1 00:00:00 agetty

12853 ? 00:00:00 cifsoplockd

12854 ? 00:00:00 cifsdnotifyd

14231 ? 00:10:34 lighttpd

14232 ? 00:00:00 php-cgi

54981 pts/0 00:00:00 vim

55465 ? 00:00:00 php-cgi

55546 ? 00:00:00 bind9-snmp-stat

55704 pts/1 00:00:00 ps

ps 与 top 非常相似,但 ps 提供更多的信息。

输出长格式

# ps -Al

输出附加全格式(显示进程在执行时传入的参数)
# ps -AlF

显示进程结构

# ps –AlFH




在进程后显示线程

# ps –AlLm




打印服务器上所有进程

# ps ax

# ps axu




打印进程树

# ps -ejH

# ps axjf

# pstree




打印安全信息

# ps -eo euser,ruser,suser,fuser,f,comm,label

# ps axZ

# ps –eM




查看使用 Vivek 用户名运行的进程

# ps -U vivek -u vivek u




设置自定义输出格式

# ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
# ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm

# ps -eopid,tt,user,fname,tmout,f,wchan




只显示 Lighttpd 的进程 ID

# ps -C lighttpd -o pid=

或者

# pgrep lighttpd

或者

# pgrep -u vivek php-cgi




显示 PID 为 55977 的进程名称

# ps -p 55977 -o comm=




找出消耗内存最多的前 10 名进程

# ps -auxf | sort -nr -k 4 | head –10




找出使用 CPU 最多的前 10 名进程

# ps -auxf | sort -nr -k 3 | head -10

free – 内存使用情况

free 命令显示系统中空闲的、已用的物理内存及 swap 内存,及被内核使用的 buffer。

# free




输出样例:

total used free shared buffers cached

Mem: 12302896 9739664 2563232 0 523124 5154740

-/+ buffers/cache: 4061800 8241096
Swap: 1052248 0 1052248

iostat – CPU 平均负载,硬盘活动

iostat 命令可报告中央处理器(CPU)的统计信息,各种设备、分区及网络文件系统输入/输出的统计信息。

# iostat




输出样例:

Linux 2.6.18-128.1.14.el5 (www03.nixcraft.in) 06/26/2009

avg-cpu: %user %nice %system %iowait %steal %idle

3.50 0.09 0.51 0.03 0.00 95.86

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn

sda 22.04 31.88 512.03 16193351 260102868

sda1 0.00 0.00 0.00 2166 180

sda2 22.04 31.87 512.03 16189010 260102688

sda3 0.00 0.00 0.00 1615 0

sar – 搜集和报告系统活动

sar 命令用来搜集、报告和储存系统活动信息。查看网路计数器,输入:

# sar -n DEV | more




显示最近 24 小时网络计数器

# sar -n DEV -f /var/log/sa/sa24 | more




你亦可以用 sar 显示实时情况

# sar 4 5




输出样例:

Linux 2.6.18-128.1.14.el5 (www03.nixcraft.in)   06/26/2009
06:45:12 PM         CPU        %user       %nice    %system        %iowait      %steal        %idle

06:45:16 PM         all        2.00      0.00      0.22     0.00        0.00       97.78

06:45:20 PM         all        2.07      0.00      0.38     0.03        0.00       97.52

06:45:24 PM         all        0.94      0.00      0.28     0.00        0.00       98.78

06:45:28 PM         all        1.56      0.00      0.22     0.00        0.00       98.22

06:45:32 PM         all        3.53      0.00      0.25     0.03        0.00       96.19

Average:          all      2.02        0.00      0.27     0.01       0.00       97.70

mpstat – 多处理器使用率

mpstat 命令可以显示所有可用处理器的使用情况,处理器编号从 0 开始。mpstat -P ALL 显示每个处理器的平
均使用率。

# mpstat -P ALL




输出样例:

Linux 2.6.18-128.1.14.el5 (www03.nixcraft.in)             06/26/2009

06:48:11 PM CPU         %user      %nice      %sys %iowait       %irq      %soft %steal       %idle     intr/s

06:48:11 PM all         3.50    0.09     0.34    0.03     0.01     0.17     0.00      95.86   1218.04

06:48:11 PM    0        3.44      0.08    0.31     0.02   0.00      0.12       0.00   96.04    1000.31

06:48:11 PM    1        3.10      0.08    0.32     0.09   0.02      0.11       0.00   96.28     34.93

06:48:11 PM    2        4.16      0.11    0.36     0.02   0.00      0.11       0.00   95.25      0.00

06:48:11 PM    3        3.77      0.11    0.38     0.03   0.01      0.24       0.00   95.46     44.80

06:48:11 PM    4        2.96      0.07    0.29     0.04   0.02      0.10       0.00   96.52     25.91

06:48:11 PM    5        3.26      0.08    0.28     0.03   0.01      0.10       0.00   96.23     14.98

06:48:11 PM    6        4.00      0.10    0.34     0.01   0.00      0.13       0.00   95.42      3.75

06:48:11 PM    7        3.30      0.11    0.39     0.03   0.01      0.46       0.00   95.69     76.89




pmap – 进程的内存使用

pmap 命令可以显示进程的内存映射,使用这个命令可以找出造成内存瓶颈的原因。
# pmap -d PID




显示 PID 为 47394 进程的内存信息。

# pmap -d 47394




输出样例:

47394:    /usr/bin/php-cgi

Address            Kbytes Mode Offset      Device   Mapping

0000000000400000         2584 r-x– 0000000000000000 008:00002 php-cgi

0000000000886000          140 rw— 0000000000286000 008:00002 php-cgi

00000000008a9000           52 rw— 00000000008a9000 000:00000        [ anon ]

0000000000aa8000           76 rw— 00000000002a8000 008:00002 php-cgi

000000000f678000         1980 rw— 000000000f678000 000:00000        [ anon ]

000000314a600000          112 r-x– 0000000000000000 008:00002 ld-2.5.so

000000314a81b000           4 r—- 000000000001b000 008:00002 ld-2.5.so

000000314a81c000           4 rw— 000000000001c000 008:00002 ld-2.5.so

000000314aa00000         1328 r-x– 0000000000000000 008:00002 libc-2.5.so

000000314ab4c000         2048 —– 000000000014c000 008:00002 libc-2.5.so

00002af8d48fd000          4 rw— 0000000000006000 008:00002 xsl.so

00002af8d490c000          40 r-x– 0000000000000000 008:00002 libnss_files-2.5.so

00002af8d4916000         2044 —– 000000000000a000 008:00002 libnss_files-2.5.so

00002af8d4b15000           4 r—- 0000000000009000 008:00002 libnss_files-2.5.so

00002af8d4b16000           4 rw— 000000000000a000 008:00002 libnss_files-2.5.so

00002af8d4b17000 768000 rw-s- 0000000000000000 000:00009 zero (deleted)

00007fffc95fe000        84 rw— 00007ffffffea000 000:00000     [ stack ]

ffffffffff600000    8192 —– 0000000000000000 000:00000        [ anon ]
mapped: 933712K   writeable/private: 4304K   shared: 768000K




最后一行非常重要:

* mapped: 933712K 内存映射所占空间大小

* writeable/private: 4304K 私有地址空间大小

* shared: 768000K 共享地址空间大小

netstat 和 ss – 网络相关信息

netstat 可以显示网络链接、路由表信息、接口统计信息、伪装链接和多播成员(multicast memberships),ss
命令用来显示网络套接字信息,它允许显示类似 netstat 一样的信息。关于 ss 和 netstat 使用,可参考下列资
源。




iptraf – 网络实时信息

iptraf 是一个可交互式的 IP 网络监控工具。它可以生成多种网络统计信息包括:TCP 信息、UDP 数量、ICMP 和
OSPF 信息、以太网负载信 息、节点状态、IP 校验错误等。有下面几种信息格式:

  •   不同网络 TCP 链接传输量
  •   不同网络接口 IP 传输量
  •   不同协议网络传输量
  •   不同 TCP/UDP 端口和不同包大小网络传输量
  •   不同第二层地址网络传输量




图 02:一般接口信息:不同网络接口 IP 传输量
图 03:不同网络 TCP 链接传输量




tcpdump:详细的网络流量分析

tcpdump 是一个简单网络流量转储工具,然而要使用好需要对 TCP/IP 协议非常熟悉。例如要显示关于 DNS 的
网络流量,输入:

# tcpdump -i eth1 ‘udp port 53′




显示所有进出 80 端口 IPv4 HTTP 包,也就是只打印包含数据的包。例如:SYN、FIN 包和 ACK-only 包输入:

# tcpdump ‘tcp port 80 and (((ip[2:2] – ((ip[0]&0xf)<<2)) – ((tcp[12]&0xf0)>>2)) != 0)’




显示所有到的 FTP 会话,输入:

# tcpdump -i eth1 ‘dst 202.54.1.5 and (port 21 or 20′




显示所有到 192.168.1.5 的 HTTP 会话

# tcpdump -ni eth0 ‘dst 192.168.1.5 and tcp and port http’
用 wireshark 浏览转储文件中的详细信息,输入:

# tcpdump -n -i eth1 -s 0 -w output.txt src or dst port 80

strace – 系统调用

追踪系统调用和型号,这对于调试 Web 服务器和其他服务器非常有用。了解怎样追踪进程和他功能。




/proc 文件系统 – 各种内核信息

/proc 目录下文件提供了很多不同硬件设备和内核的详细信息。更多详情参见 Linux kernel /proc。一般/proc
例如:

# cat /proc/cpuinfo

# cat /proc/meminfo

# cat /proc/zoneinfo

# cat /proc/mounts




Nagios – 服务器及网络监控

Nagios 是一款非常流行的系统及网络监控软件。你可以轻松监控所有的主机、网络设备及服务。它能在发生故障
和重新恢复后发送警讯。FAN 是"Fully Automated Nagios"的缩写。FAN 的目标就是由 Nagios 社群提供
Nagios 的安装。为了使安装 Nagios 服务器更加容易,FAN 提供一个标准 ISO 格 式的光盘镜像。此发行版中还
会包含一组增强用户使用体验的工具。

Cacti – 基于 Web 的监控工具

Cacti 是一套完成的网络图形化解决方案,基于 RRDTool 的资料存储和图形化功能。Cacti 提供一个快速的轮询
器、进阶的图形化模板、多种 数据采集方法和用户管理功能。这些功能都拥有非常友好易用的界面,确保可以部
署在一个包含数百台设备的复杂网络中。它提供关于网络、CPU、内存、已登录 用户、Apache、DNS 等信息。

KDE System Guard

KSysguard 是在 KDE 桌面下一个网络化的系统监控工具。这个工具可以通过 SSH 会话运行。它提供很多功能,
例如可以监控本机和远程主机的客 户端/服务器架构,前端图形界面使用所谓传感器得到信息并展现出来。传感器
返回的可以是一个简单的数值或是一组表格的信息。针对不同的信息类型,提供一个 或多个显示。这些显示被组
织多个工作表中,可以工作表可以独体储存和加载。所以,KSysguard 不只是一个简单的任务管理器,还是一个
可以控制多台服 务器的强大工具。
图 05:KDE System Guard

Gnome System Monitor

System Monitor 可以显示系统基本信息、监控系统进程、系统资源及文件系统使用率。你也可以使用 System
Monitor 监控和修改系统行为。尽管没有 KDE System Guard 功能强大,但其提供的基本信息对于入门用户还
是非常有用的。

* 显示关于计算机硬件和软件的各种基本信息。

* Linux 内核版本

* GNOME 版本

* 硬件

* 安装的内存

* 处理器及其速度

* 系统状态

* 当前可用的硬盘空间

* 进程

* 内存及交换空间

* 网络使用率

* 文件系统
* 所有挂载的文件系统及其基本信息




图 06:The Gnome System Monitor application

More Related Content

What's hot (19)

PPT
第三章Ti msp430平台介紹 v3
冠宇 陳
 
PDF
Runtime upgrade linux
cri fan
 
PDF
Deployment instruction tg3100 ig-cn
ahnlabchina
 
PDF
02 86 duino_簡介
CAVEDU Education
 
PPT
最终版
guestc7973d
 
PPTX
艾鍗學院-健康照護手環
艾鍗科技
 
PDF
瞻營全電子_六足機器人(一)
CAVEDU Education
 
PDF
Sery lvs+keepalived
colderboy17
 
PDF
Deployment instruction tg1100 ig-cn
ahnlabchina
 
PDF
Deployment instruction trus guard utm 1000
ahnlabchina
 
PDF
Deployment instruction trus guard utm 400
ahnlabchina
 
PDF
瞻營全電子_六足機器人(四)
CAVEDU Education
 
PPTX
GPS + Google fusion table 雲端應用
艾鍗科技
 
PDF
[嵌入式系統] MCS-51 實驗 - 使用 IAR (1)
Simen Li
 
PPT
家庭醫療系統 PCMH
艾鍗科技
 
PDF
古斯塔斯集团的Qmail邮件系统
gavin shaw
 
PDF
Ipaq with linux
descent Sung
 
DOCX
CloudStack Installation on Ubuntu
康志強 大人
 
PDF
Manual
guest0a8a23
 
第三章Ti msp430平台介紹 v3
冠宇 陳
 
Runtime upgrade linux
cri fan
 
Deployment instruction tg3100 ig-cn
ahnlabchina
 
02 86 duino_簡介
CAVEDU Education
 
最终版
guestc7973d
 
艾鍗學院-健康照護手環
艾鍗科技
 
瞻營全電子_六足機器人(一)
CAVEDU Education
 
Sery lvs+keepalived
colderboy17
 
Deployment instruction tg1100 ig-cn
ahnlabchina
 
Deployment instruction trus guard utm 1000
ahnlabchina
 
Deployment instruction trus guard utm 400
ahnlabchina
 
瞻營全電子_六足機器人(四)
CAVEDU Education
 
GPS + Google fusion table 雲端應用
艾鍗科技
 
[嵌入式系統] MCS-51 實驗 - 使用 IAR (1)
Simen Li
 
家庭醫療系統 PCMH
艾鍗科技
 
古斯塔斯集团的Qmail邮件系统
gavin shaw
 
Ipaq with linux
descent Sung
 
CloudStack Installation on Ubuntu
康志強 大人
 
Manual
guest0a8a23
 

Similar to 管理员必备的20个 Linux系统监控工具 (20)

DOCX
Linux性能监控cpu内存io网络
lovingprince58
 
PPTX
混合存储测试结果
skate110
 
PDF
Osc scott linux下的数据库优化for_postgresql
OpenSourceCamp
 
PDF
Mysql handlersocket
pwesh
 
PPTX
Avm2虚拟机浅析与as3性能优化(陈士凯)
FLASH开发者交流会
 
PPTX
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
Shanda innovation institute
 
PPTX
Mahout資料分析基礎入門
Jhang Raymond
 
PDF
Bigdata 大資料分析實務 (進階上機課程)
家雋 莊
 
PDF
Hadoop+spark實作
FEG
 
DOC
Heartbeat v2 安装和配置原理
Pickup Li
 
PPTX
Bigdata 大資料分析實務 (進階上機課程)
家雋 莊
 
PDF
用Raspberry PI學Linux驅動程式
Stanley Ho
 
PDF
Java线上应用问题排查方法和工具(空望)
ykdsg
 
PPT
Aix操作系统培训文档
lwj2012
 
PPTX
Neural Turing Machine Tutorial
Mark Chang
 
PPT
20 cpu04
Huaijin Chen
 
PDF
九州通小型机扩Vg大小(20090416)
heima911
 
PPT
Optimzing mysql
liufabin 66688
 
PPT
Godson x86
bingbuidea
 
PPT
构建ActionScript游戏服务器,支持超过15000并发连接
Renaun Erickson
 
Linux性能监控cpu内存io网络
lovingprince58
 
混合存储测试结果
skate110
 
Osc scott linux下的数据库优化for_postgresql
OpenSourceCamp
 
Mysql handlersocket
pwesh
 
Avm2虚拟机浅析与as3性能优化(陈士凯)
FLASH开发者交流会
 
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
Shanda innovation institute
 
Mahout資料分析基礎入門
Jhang Raymond
 
Bigdata 大資料分析實務 (進階上機課程)
家雋 莊
 
Hadoop+spark實作
FEG
 
Heartbeat v2 安装和配置原理
Pickup Li
 
Bigdata 大資料分析實務 (進階上機課程)
家雋 莊
 
用Raspberry PI學Linux驅動程式
Stanley Ho
 
Java线上应用问题排查方法和工具(空望)
ykdsg
 
Aix操作系统培训文档
lwj2012
 
Neural Turing Machine Tutorial
Mark Chang
 
20 cpu04
Huaijin Chen
 
九州通小型机扩Vg大小(20090416)
heima911
 
Optimzing mysql
liufabin 66688
 
Godson x86
bingbuidea
 
构建ActionScript游戏服务器,支持超过15000并发连接
Renaun Erickson
 
Ad

More from wensheng wei (20)

DOC
你会柔软地想起这个校园
wensheng wei
 
DOC
几米语录(1)
wensheng wei
 
DOC
我的简历
wensheng wei
 
DOC
Installation of Subversion on Ubuntu,...
wensheng wei
 
DOC
高级PHP应用程序漏洞审核技术
wensheng wei
 
DOC
存储过程编写经验和优化措施
wensheng wei
 
DOC
CentOS5 apache2 mysql5 php5 Zend
wensheng wei
 
DOC
Happiness is a Journey
wensheng wei
 
DOC
Java JNI 编程进阶
wensheng wei
 
DOC
Linux Shortcuts and Commands:
wensheng wei
 
DOC
Java正则表达式详解
wensheng wei
 
PDF
Linux Security Quick Reference Guide
wensheng wei
 
PDF
issue35 zh-CN
wensheng wei
 
DOC
Android模拟器SD Card映像文件使用方法
wensheng wei
 
DOC
Subversion FAQ
wensheng wei
 
DOC
如何硬盘安装ubuntu8.10
wensheng wei
 
PDF
ubunturef
wensheng wei
 
DOC
数据库设计方法、规范与技巧
wensheng wei
 
DOC
揭秘全球最大网站Facebook背后的那些软件
wensheng wei
 
DOC
mysql的字符串函数
wensheng wei
 
你会柔软地想起这个校园
wensheng wei
 
几米语录(1)
wensheng wei
 
我的简历
wensheng wei
 
Installation of Subversion on Ubuntu,...
wensheng wei
 
高级PHP应用程序漏洞审核技术
wensheng wei
 
存储过程编写经验和优化措施
wensheng wei
 
CentOS5 apache2 mysql5 php5 Zend
wensheng wei
 
Happiness is a Journey
wensheng wei
 
Java JNI 编程进阶
wensheng wei
 
Linux Shortcuts and Commands:
wensheng wei
 
Java正则表达式详解
wensheng wei
 
Linux Security Quick Reference Guide
wensheng wei
 
issue35 zh-CN
wensheng wei
 
Android模拟器SD Card映像文件使用方法
wensheng wei
 
Subversion FAQ
wensheng wei
 
如何硬盘安装ubuntu8.10
wensheng wei
 
ubunturef
wensheng wei
 
数据库设计方法、规范与技巧
wensheng wei
 
揭秘全球最大网站Facebook背后的那些软件
wensheng wei
 
mysql的字符串函数
wensheng wei
 
Ad

管理员必备的20个 Linux系统监控工具

  • 1. 管理员必备的 20 个 Linux 系统监控工具 需要监控 Linux 服务器系统性能吗?尝试下面这些系统内置或附件的工具吧。大多数 Linux 发行版本都装备了大 量的监控工具。这些工具提供了能用 作取得相关信息和系统活动的量度指标。你能使用这些工具发现造成性能问 题可能原因。此次讨论到的工具只是分析和调试服务器下面问题时最基本工具中的一部 分。 1.找出瓶颈 2.硬盘(存储)瓶颈 3.CPU 及内存瓶颈 4.网络瓶颈 #1: top – 进程活动 top 提供一个当前运行系统实时动态的视图,也就是正在运行进程。在默认情况下,显示系统中 CPU 使用率最高 的任务,并每 5 秒钟刷新一次。 图 01.Linux top 命令
  • 3. 显示内存使用详细信息 # vmstat -m 显示内存活动/不活动的信息 # vmstat -a w – 显示谁已登录,他们正在做什么? w 命令显示系统当前用户及其运行进程的信息。 # w username # w vivek 输出样例: 17:58:47 up 5 days, 20:28, 2 users, load average: 0.36, 0.26, 0.24 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 10.1.3.145 14:55 5.00s 0.04s 0.02s vim /etc/resolv.conf root pts/1 10.1.3.145 17:43 0.00s 0.03s 0.00s w uptime – 告诉系统已经运行了多久? uptime 命令过去只显示系统运行多久。现在,可以显示系统运行多久、当前有多少的用户登录、在过去的 1,5,15 分钟里平均负载时多少。 # uptime 输入样例: 18:02:41 up 41 days, 23:42, 1 user, load average: 0.00, 0.00, 0.00 1 可以被认为是最优的负载值。负载是会随着系统不同改变得。单 CPU 系统 1-3 和 SMP 系统 6-10 都是可能接受 的。 ps – 显示进程
  • 4. ps 命令显示当前运行进程的快照。使用-A 或-e 显示所有进程。 # ps -A 输出样例: PID TTY TIME CMD 1 ? 00:00:02 init 2 ? 00:00:02 migration/0 3 ? 00:00:01 ksoftirqd/0 4 ? 00:00:00 watchdog/0 5 ? 00:00:00 migration/1 6 ? 00:00:15 ksoftirqd/1 4885 tty1 00:00:00 mingetty 4886 tty2 00:00:00 mingetty 4887 tty3 00:00:00 mingetty 4888 tty4 00:00:00 mingetty 4891 tty5 00:00:00 mingetty 4892 tty6 00:00:00 mingetty 4893 ttyS1 00:00:00 agetty 12853 ? 00:00:00 cifsoplockd 12854 ? 00:00:00 cifsdnotifyd 14231 ? 00:10:34 lighttpd 14232 ? 00:00:00 php-cgi 54981 pts/0 00:00:00 vim 55465 ? 00:00:00 php-cgi 55546 ? 00:00:00 bind9-snmp-stat 55704 pts/1 00:00:00 ps ps 与 top 非常相似,但 ps 提供更多的信息。 输出长格式 # ps -Al 输出附加全格式(显示进程在执行时传入的参数)
  • 5. # ps -AlF 显示进程结构 # ps –AlFH 在进程后显示线程 # ps –AlLm 打印服务器上所有进程 # ps ax # ps axu 打印进程树 # ps -ejH # ps axjf # pstree 打印安全信息 # ps -eo euser,ruser,suser,fuser,f,comm,label # ps axZ # ps –eM 查看使用 Vivek 用户名运行的进程 # ps -U vivek -u vivek u 设置自定义输出格式 # ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
  • 6. # ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm # ps -eopid,tt,user,fname,tmout,f,wchan 只显示 Lighttpd 的进程 ID # ps -C lighttpd -o pid= 或者 # pgrep lighttpd 或者 # pgrep -u vivek php-cgi 显示 PID 为 55977 的进程名称 # ps -p 55977 -o comm= 找出消耗内存最多的前 10 名进程 # ps -auxf | sort -nr -k 4 | head –10 找出使用 CPU 最多的前 10 名进程 # ps -auxf | sort -nr -k 3 | head -10 free – 内存使用情况 free 命令显示系统中空闲的、已用的物理内存及 swap 内存,及被内核使用的 buffer。 # free 输出样例: total used free shared buffers cached Mem: 12302896 9739664 2563232 0 523124 5154740 -/+ buffers/cache: 4061800 8241096
  • 7. Swap: 1052248 0 1052248 iostat – CPU 平均负载,硬盘活动 iostat 命令可报告中央处理器(CPU)的统计信息,各种设备、分区及网络文件系统输入/输出的统计信息。 # iostat 输出样例: Linux 2.6.18-128.1.14.el5 (www03.nixcraft.in) 06/26/2009 avg-cpu: %user %nice %system %iowait %steal %idle 3.50 0.09 0.51 0.03 0.00 95.86 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 22.04 31.88 512.03 16193351 260102868 sda1 0.00 0.00 0.00 2166 180 sda2 22.04 31.87 512.03 16189010 260102688 sda3 0.00 0.00 0.00 1615 0 sar – 搜集和报告系统活动 sar 命令用来搜集、报告和储存系统活动信息。查看网路计数器,输入: # sar -n DEV | more 显示最近 24 小时网络计数器 # sar -n DEV -f /var/log/sa/sa24 | more 你亦可以用 sar 显示实时情况 # sar 4 5 输出样例: Linux 2.6.18-128.1.14.el5 (www03.nixcraft.in) 06/26/2009
  • 8. 06:45:12 PM CPU %user %nice %system %iowait %steal %idle 06:45:16 PM all 2.00 0.00 0.22 0.00 0.00 97.78 06:45:20 PM all 2.07 0.00 0.38 0.03 0.00 97.52 06:45:24 PM all 0.94 0.00 0.28 0.00 0.00 98.78 06:45:28 PM all 1.56 0.00 0.22 0.00 0.00 98.22 06:45:32 PM all 3.53 0.00 0.25 0.03 0.00 96.19 Average: all 2.02 0.00 0.27 0.01 0.00 97.70 mpstat – 多处理器使用率 mpstat 命令可以显示所有可用处理器的使用情况,处理器编号从 0 开始。mpstat -P ALL 显示每个处理器的平 均使用率。 # mpstat -P ALL 输出样例: Linux 2.6.18-128.1.14.el5 (www03.nixcraft.in) 06/26/2009 06:48:11 PM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s 06:48:11 PM all 3.50 0.09 0.34 0.03 0.01 0.17 0.00 95.86 1218.04 06:48:11 PM 0 3.44 0.08 0.31 0.02 0.00 0.12 0.00 96.04 1000.31 06:48:11 PM 1 3.10 0.08 0.32 0.09 0.02 0.11 0.00 96.28 34.93 06:48:11 PM 2 4.16 0.11 0.36 0.02 0.00 0.11 0.00 95.25 0.00 06:48:11 PM 3 3.77 0.11 0.38 0.03 0.01 0.24 0.00 95.46 44.80 06:48:11 PM 4 2.96 0.07 0.29 0.04 0.02 0.10 0.00 96.52 25.91 06:48:11 PM 5 3.26 0.08 0.28 0.03 0.01 0.10 0.00 96.23 14.98 06:48:11 PM 6 4.00 0.10 0.34 0.01 0.00 0.13 0.00 95.42 3.75 06:48:11 PM 7 3.30 0.11 0.39 0.03 0.01 0.46 0.00 95.69 76.89 pmap – 进程的内存使用 pmap 命令可以显示进程的内存映射,使用这个命令可以找出造成内存瓶颈的原因。
  • 9. # pmap -d PID 显示 PID 为 47394 进程的内存信息。 # pmap -d 47394 输出样例: 47394: /usr/bin/php-cgi Address Kbytes Mode Offset Device Mapping 0000000000400000 2584 r-x– 0000000000000000 008:00002 php-cgi 0000000000886000 140 rw— 0000000000286000 008:00002 php-cgi 00000000008a9000 52 rw— 00000000008a9000 000:00000 [ anon ] 0000000000aa8000 76 rw— 00000000002a8000 008:00002 php-cgi 000000000f678000 1980 rw— 000000000f678000 000:00000 [ anon ] 000000314a600000 112 r-x– 0000000000000000 008:00002 ld-2.5.so 000000314a81b000 4 r—- 000000000001b000 008:00002 ld-2.5.so 000000314a81c000 4 rw— 000000000001c000 008:00002 ld-2.5.so 000000314aa00000 1328 r-x– 0000000000000000 008:00002 libc-2.5.so 000000314ab4c000 2048 —– 000000000014c000 008:00002 libc-2.5.so 00002af8d48fd000 4 rw— 0000000000006000 008:00002 xsl.so 00002af8d490c000 40 r-x– 0000000000000000 008:00002 libnss_files-2.5.so 00002af8d4916000 2044 —– 000000000000a000 008:00002 libnss_files-2.5.so 00002af8d4b15000 4 r—- 0000000000009000 008:00002 libnss_files-2.5.so 00002af8d4b16000 4 rw— 000000000000a000 008:00002 libnss_files-2.5.so 00002af8d4b17000 768000 rw-s- 0000000000000000 000:00009 zero (deleted) 00007fffc95fe000 84 rw— 00007ffffffea000 000:00000 [ stack ] ffffffffff600000 8192 —– 0000000000000000 000:00000 [ anon ]
  • 10. mapped: 933712K writeable/private: 4304K shared: 768000K 最后一行非常重要: * mapped: 933712K 内存映射所占空间大小 * writeable/private: 4304K 私有地址空间大小 * shared: 768000K 共享地址空间大小 netstat 和 ss – 网络相关信息 netstat 可以显示网络链接、路由表信息、接口统计信息、伪装链接和多播成员(multicast memberships),ss 命令用来显示网络套接字信息,它允许显示类似 netstat 一样的信息。关于 ss 和 netstat 使用,可参考下列资 源。 iptraf – 网络实时信息 iptraf 是一个可交互式的 IP 网络监控工具。它可以生成多种网络统计信息包括:TCP 信息、UDP 数量、ICMP 和 OSPF 信息、以太网负载信 息、节点状态、IP 校验错误等。有下面几种信息格式: • 不同网络 TCP 链接传输量 • 不同网络接口 IP 传输量 • 不同协议网络传输量 • 不同 TCP/UDP 端口和不同包大小网络传输量 • 不同第二层地址网络传输量 图 02:一般接口信息:不同网络接口 IP 传输量
  • 11. 图 03:不同网络 TCP 链接传输量 tcpdump:详细的网络流量分析 tcpdump 是一个简单网络流量转储工具,然而要使用好需要对 TCP/IP 协议非常熟悉。例如要显示关于 DNS 的 网络流量,输入: # tcpdump -i eth1 ‘udp port 53′ 显示所有进出 80 端口 IPv4 HTTP 包,也就是只打印包含数据的包。例如:SYN、FIN 包和 ACK-only 包输入: # tcpdump ‘tcp port 80 and (((ip[2:2] – ((ip[0]&0xf)<<2)) – ((tcp[12]&0xf0)>>2)) != 0)’ 显示所有到的 FTP 会话,输入: # tcpdump -i eth1 ‘dst 202.54.1.5 and (port 21 or 20′ 显示所有到 192.168.1.5 的 HTTP 会话 # tcpdump -ni eth0 ‘dst 192.168.1.5 and tcp and port http’
  • 12. 用 wireshark 浏览转储文件中的详细信息,输入: # tcpdump -n -i eth1 -s 0 -w output.txt src or dst port 80 strace – 系统调用 追踪系统调用和型号,这对于调试 Web 服务器和其他服务器非常有用。了解怎样追踪进程和他功能。 /proc 文件系统 – 各种内核信息 /proc 目录下文件提供了很多不同硬件设备和内核的详细信息。更多详情参见 Linux kernel /proc。一般/proc 例如: # cat /proc/cpuinfo # cat /proc/meminfo # cat /proc/zoneinfo # cat /proc/mounts Nagios – 服务器及网络监控 Nagios 是一款非常流行的系统及网络监控软件。你可以轻松监控所有的主机、网络设备及服务。它能在发生故障 和重新恢复后发送警讯。FAN 是"Fully Automated Nagios"的缩写。FAN 的目标就是由 Nagios 社群提供 Nagios 的安装。为了使安装 Nagios 服务器更加容易,FAN 提供一个标准 ISO 格 式的光盘镜像。此发行版中还 会包含一组增强用户使用体验的工具。 Cacti – 基于 Web 的监控工具 Cacti 是一套完成的网络图形化解决方案,基于 RRDTool 的资料存储和图形化功能。Cacti 提供一个快速的轮询 器、进阶的图形化模板、多种 数据采集方法和用户管理功能。这些功能都拥有非常友好易用的界面,确保可以部 署在一个包含数百台设备的复杂网络中。它提供关于网络、CPU、内存、已登录 用户、Apache、DNS 等信息。 KDE System Guard KSysguard 是在 KDE 桌面下一个网络化的系统监控工具。这个工具可以通过 SSH 会话运行。它提供很多功能, 例如可以监控本机和远程主机的客 户端/服务器架构,前端图形界面使用所谓传感器得到信息并展现出来。传感器 返回的可以是一个简单的数值或是一组表格的信息。针对不同的信息类型,提供一个 或多个显示。这些显示被组 织多个工作表中,可以工作表可以独体储存和加载。所以,KSysguard 不只是一个简单的任务管理器,还是一个 可以控制多台服 务器的强大工具。
  • 13. 图 05:KDE System Guard Gnome System Monitor System Monitor 可以显示系统基本信息、监控系统进程、系统资源及文件系统使用率。你也可以使用 System Monitor 监控和修改系统行为。尽管没有 KDE System Guard 功能强大,但其提供的基本信息对于入门用户还 是非常有用的。 * 显示关于计算机硬件和软件的各种基本信息。 * Linux 内核版本 * GNOME 版本 * 硬件 * 安装的内存 * 处理器及其速度 * 系统状态 * 当前可用的硬盘空间 * 进程 * 内存及交换空间 * 网络使用率 * 文件系统