工具 功能描述
uptime 系统平均负载率
dmesg 硬件/系统信息
top 进程进行状态
iostat CPU和磁盘平均使用率
vmstat 系统运行状态
sar 实时收集系统使用状态
KDE System Guard 图形监控工具
free 内存使用率
w 查出谁登录系统和他们正在做什么
ps 和 kill
显示和杀死进程
netstat 和 ss 网络统计
iptraf 网络实时统计
tcpdump 网络流量详细信息分析
/Proc 文件系统 cat 多种内核信息的统计和查看
iftop 流量监控
traffic-vis 网络监控(只有SUSE有)
date 和 clock 修改和查看系统的时间
pmap 进程内存占用率
strace 追踪程序运行状态
ulimit 系统资源使用限制
mpstat 多处理器使用率

1、uptime

uptime命令用于查看服务器运行了多长时间以及有多少个用户登录,快速获知服务器的负荷情况。

uptime的输出包含一项内容是load average,显示了最近1,5,15分钟的负荷情况。它的值代表等待CPU处理的进程数,如果CPU没有时间处理这些进程,load average值会升高;反之则会降低。

load average的最佳值是1,说明每个进程都可以马上处理并且没有CPU cycles被丢失。对于单CPU的机器,1或者2是可以接受的值;对于多路CPU的机器,load average值可能在8到10之间。

也可以使用uptime命令来判断网络性能。例如,某个网络应用性能很低,通过运行uptime查看服务器的负荷是否很高,如果不是,那么问题应该是网络方面造成的。

以下是uptime的运行实例:

9:24am  up  19:06,  1 user,  load average: 0.00, 0.00, 0.00

也可以查看/proc/loadavg和/proc/uptime两个文件,注意不能编辑/proc中的文件,要用cat等命令来查看,如:

liyawei:~ # cat /proc/loadavg

0.00 0.00 0.00 1/55 5505

 

2、dmesg

dmesg命令主要用来显示内核信息。使用dmesg可以有效诊断机器硬件故障或者添加硬件出现的问题。

另外,使用dmesg可以确定您的服务器安装了那些硬件。每次系统重启,系统都会检查所有硬件并将信息记录下来。执行/bin/dmesg命令可以查看该记录。

dmesg输入实例:

ReiserFS: hda6: checking transaction log (hda6)

ReiserFS: hda6: Using r5 hash to sort names

Adding 1044184k swap on /dev/hda5.  Priority:-1 extents:1 across:1044184k

parport_pc: VIA 686A/8231 detected

parport_pc: probing current configuration

 

3、top

top命令显示处理器的活动状况。缺省情况下,显示占用CPU最多的任务,并且每隔5秒钟做一次刷新。

  第一部分 -- 最上部的 系统信息栏 :

  第一行(top):

  “00:11:04”为系统当前时刻;

  “3:35”为系统启动后到现在的运作时间;

  “2 users”为当前登录到系统的用户,更确切的说是登录到用户的终端数 -- 同一个用户同一时间对系统多个终端的连接将被视为多个用户连接到系统,这里的用户数也将表现为终端的数目;

  “load average”为当前系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数,一般的可以认为这个数值超过 CPU 数目时,CPU 将比较吃力的负载当前系统所包含的进程;

  第二行(Tasks):

  “59 total”为当前系统进程总数;

  “1 running”为当前运行中的进程数;

  “58 sleeping”为当前处于等待状态中的进程数;

  “0 stoped”为被停止的系统进程数;

  “0 zombie”为被复原的进程数;

  第三行(Cpus):

  分别表示了 CPU 当前的使用率;

  第四行(Mem):

  分别表示了内存总量、当前使用量、空闲内存量、以及缓冲使用中的内存量;

  第五行(Swap):

  表示类别同第四行(Mem),但此处反映着交换分区(Swap)的使用情况。通常,交换分区(Swap)被频繁使用的情况,将被视作物理内存不足而造成的。

  第二部分 -- 中间部分的内部命令提示栏:

  top 运行中可以通过 top 的内部命令对进程的显示方式进行控制。内部命令如下表:

  s - 改变画面更新频率

  l - 关闭或开启第一部分第一行 top 信息的表示(字母l)

  t - 关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示

  m - 关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示

  N - 以 PID 的大小的顺序排列表示进程列表

  P - 以 CPU 占用率大小的顺序排列进程列表

  M - 以内存占用率大小的顺序排列进程列表

    1 - 分别列出多核cpu的情况(数字1)

  h - 显示帮助

  n - 设置在进程列表所显示进程的数量

  q - 退出 top

  s - 改变画面更新周期

  第三部分 -- 最下部分的进程列表栏:

  以 PID 区分的进程列表将根据所设定的画面更新时间定期的更新。通过 top 内部命令可以控制此处的显示方式。

4、iostat

iostat由Red Hat Enterprise Linux AS发布。同时iostat也是Sysstat的一部分,可以下载到,网址是http://perso.wanadoo.fr/sebastien.godard/

执行iostat命令可以从系统启动之后的CPU平均时间,类似于uptime。除此之外,iostat还对创建一个服务器磁盘子系统的活动报告。该报告包含两部分:CPU使用情况和磁盘使用情况。

iostat显示实例:

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

0.16    0.01    0.03    0.10    0.00   99.71

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn

hda               0.31         4.65         4.12     327796     290832

 

CPU占用情况包括四块内容

%user:显示user level (applications)时,CPU的占用情况。

%nice:显示user level在nice priority时,CPU的占用情况。

%sys:显示system level (kernel)时,CPU的占用情况。

%idle: 显示CPU空闲时间所占比例。

磁盘使用报告分成以下几个部分:

Device: 块设备的名字

tps: 该设备每秒I/O传输的次数。多个I/O请求可以组合为一个,每个I/O请求传输的字节数不同,因此可以将多个I/O请求合并为一个。

Blk_read/s, Blk_wrtn/s: 表示从该设备每秒读写的数据块数量。块的大小可以不同,如1024, 2048 或 4048字节,这取决于partition的大小。

例如,执行下列命令获得设备/dev/sda1 的数据块大小:

dumpe2fs -h /dev/sda1 |grep -F "Block size"

输出结果如下

dumpe2fs 1.34 (25-Jul-2003)

Block size: 1024

Blk_read, Blk_wrtn: 指示自从系统启动之后数据块读/写的合计数。

也可以查看这几个文件/proc/stat,/proc/partitions,/proc/diskstats的内容。

 

5、vmstat

vmstat提供了processes, memory, paging, block I/O, traps和CPU的活动状况

procs -----------memory---------- ---swap-- -----io---- -system-- -----cpu------

r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st

0  0      0 513072  52324 162404    0    0     0    28  275   51  0  0 97  3  0

0  0      0 513072  52324 162404    0    0     0     0  255   21  0  0 100  0  0

各输出列的含义:

Process

– r: The number of processes waiting for runtime.

– b: The number of processes in uninterruptable sleep.

Memory

– swpd: The amount of virtual memory used (KB).

– free: The amount of idle memory (KB).

– buff: The amount of memory used as buffers (KB).

Swap

– si: Amount of memory swapped from the disk (KBps).

– so: Amount of memory swapped to the disk (KBps).

IO

– bi: Blocks sent to a block device (blocks/s).

– bo: Blocks received from a block device (blocks/s).

System

– in: The number of interrupts per second, including the clock.

– cs: The number of context switches per second.

CPU (these are percentages of total CPU time)

- us: Time spent running non-kernel code (user time, including nice time).

– sy: Time spent running kernel code (system time).

– id: Time spent idle. Prior to Linux 2.5.41, this included IO-wait time.

– wa: Time spent waiting for IO. Prior to Linux 2.5.41, this appeared as zero.

 

6、sar

sar是Red Hat Enterprise Linux AS发行的一个工具,同时也是Sysstat工具集的命令之一,可以从以下网址下载:http://perso.wanadoo.fr/sebastien.godard/

sar用于收集、报告或者保存系统活动信息。sar由三个应用组成:sar显示数据、sar1和sar2用于收集和保存数据。

使用sar1和sar2,系统能够配置成自动抓取信息和日志,以备分析使用。配置举例:在/etc/crontab中添加如下几行内容

同样的,你也可以在命令行方式下使用sar运行实时报告。如图所示:

从收集的信息中,可以得到详细的CPU使用情况(%user, %nice, %system, %idle)、内存页面调度、网络I/O、进程活动、块设备活动、以及interrupts/second

#sar -u 3 10

Linux 2.6.16.21-0.8-default (liyawei)   05/31/07

10:17:16          CPU     %user     %nice   %system   %iowait     %idle

10:17:31          all      0.00      0.00      0.00      0.00    100.00

10:17:34          all      0.00      0.00      0.00      0.00    100.00

查看网络计数器,输入:#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: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

7、KDE System Guard

KDE System Guard (KSysguard) 是KDE图形方式的任务管理和性能监视工具。监视本地及远程客户端/服务器架构体系的中的主机。

 

8、free

/bin/free命令显示所有空闲的和使用的内存数量,包括swap。同时也包含内核使用的缓存。

total       used       free     shared    buffers     cached

Mem:        776492     263480     513012          0      52332     162504

-/+ buffers/cache:      48644     727848

Swap:      1044184          0    1044184

 

9、w

w命令显示关于目前联机的用户,和他们进程

 

10、ps 和 kill

ps命令显示当前进程的快照。使用-A和-e选项选择所有进程:

#ps -A  显示长格式输出

#ps -AI 打开另外完整模式(它会显示命令行传递给进程参数)

#ps -AIF 参看线程(LWP和NLWP)

#ps -AIFH 查看进程中的线程

#ps -AILm 打印服务器上的所有进程

#ps ax

#ps axu

打印A进程树

#ps -ejH

#ps axjf

#pstree

打印安全信息

#ps -eo euser,ruser,suser,fuse,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的进程号

#ps -C lighttpd -o pid=

#pgrep lighttpd

#pgrep -u vivek php-cgi

显示进程号为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

 

kill 用来杀死进程

杀死进程最安全的方法是单纯使用kill命令,不加修饰符,不带标志。  首先使用ps -ef命令确定要杀死进程的PID,然后输入以下命令:

 

# kill 进程号

 注释:标准的kill命令通常都能达到目的。终止有问题的进程,并把进程的资源释放给系统。

如果进程启动了子进程,只杀死父进程,子进程仍在运行,因此仍消耗资源。为了防止这些所谓的“僵尸进程”,应确保在杀死父进程之前,先杀死其所有的子进程。

 

确定要杀死进程的PID或PPID

 

# ps -ef | grep httpd

 

以优雅的方式结束进程

 

# kill -l PID

 

-l选项告诉kill命令用好像启动进程的用户已注销的方式结束进程。当使用该选项时,kill命令也试图杀死所留下的子进程。但这个命令也不是总能成功--或许仍然需要先手工杀死子进程,然后再杀死父进程。

 

TERM信号

 

给父进程发送一个TERM信号,试图杀死它和它的子进程。

 

# kill -TERM PPID

 

killall命令

 

killall命令杀死同一进程组内的所有进程。其允许指定要终止的进程的名称,而非PID。

 

# killall httpd

 

停止和重启进程

有时候只想简单的停止和重启进程。如下:

# kill -HUP PID

该命令让Linux和缓的执行进程关闭,然后立即重启。在配置应用程序的时候,这个命令很方便,在对配置文件修改后需要重启进程时就可以执行此命令。

绝杀 kill -9 PID

同样的 kill -s SIGKILL

这个强大和危险的命令迫使进程在运行时突然终止,进程在结束后不能自我清理。危害是导致系统资源无法正常释放,一般不推荐使用,除非其他办法都无效。

当使用此命令时,一定要通过ps -ef确认没有剩下任何僵尸进程。只能通过终止父进程来消除僵尸进程。如果僵尸进程被init收养,问题就比较严重了。杀死init进程意味着关闭系统。

如果系统中有僵尸进程,并且其父进程是init,而且僵尸进程占用了大量的系统资源,那么就需要在某个时候重启机器以清除进程表了。

11、nestat和ss—网络统计

netstat命令显示连接数,路由表,接口统计,伪连接,和组播成员。

ss命令用于套接字统计。显示的信息与netstat相类似。

ss:显示Linux TCP/UDP网络和套接字信息

使用netstat命令获取关于特殊IP地址的详细信息

12、iptraf—网络实时统计

iptraf命令是交互式的多彩的IP局域网监控。

它是一个基于ncurses的IP局域网监控,产生各种网络统计包括TCP信息,UDP计数,ICMP和OSPF信息,以太网负载,节点统计,IP校验和错误,等等。它提供了以下信息易于阅读格式:

通过TCP连接统计网络流量

通过网络接口统计IP冲突

通过协议统计网络流量

通过TCP/UDP和包大小统计网络流量

通过第二层地址统计网络流量

 

13、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)'

显示所有到202.54.1.5的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

14、/Proc 文件系统—多种内核统计

/proc文件系统提供了关于多种硬件设备的详细信息和其他Linux内核信息。看看Linux内核/proc文档获取更多详细信息。通用的/proc例子:

#cat /proc/cpuinfo

#cat /proc/meminfo

#cat /proc/zoneinfo

#cat /proc/mounts

17、date 和 clock

#date -s “12:12:23 2006-10-10″ //这样可以设置全部时间

#clock --systohc //将上面的修改写入硬件时钟

测试查看一下:

#date

#hwclock

=============================

一、时区

1. 查看当前时区

date -R

2. 修改设置时区

方法(1)

tzselect

方法(2) 仅限于RedHat Linux 和 CentOS系统

timeconfig

方法(3) 适用于Debian

dpkg-reconfigure tzdata

 

3. 复制相应的时区文件,替换CentOS系统时区文件;或者创建链接文件

cp /usr/share/zoneinfo/$主时区/$次时区 /etc/localtime

在中国可以使用:

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

二、时间

1、查看时间和日期

date

2、设置时间和日期

将CentOS系统日期设定成1996年6月10日的命令

date -s 06/22/96

将CentOS系统时间设定成下午1点52分0秒的命令

date -s 13:52:00

3. 将当前时间和日期写入BIOS,避免重启后失效

hwclock -w

三、定时同步时间

# /usr/sbin/ntpdate 210.72.145.44 > /dev/null 2>&1

18、pmap

pmap可以报告某个或多个进程的内存使用情况。使用pmap判断主机中哪个进程因占用过多内存导致内存瓶颈。

pmap <pid>

 

显示进程号为47394的内存信息,输入:

#pmap -d 47394

输出示例:

47394:/usr/bin/php-cgi

Address           Kbytes Mode  Offset           Device    Mapping

000000000400000    2584 r-x-- 0000000000000000 008:00002 php-cgi

.....

ffffffffff600000    8192 ----- 0000000000000000 000:00000   [ anon ]

mapped: 933712K    writeable/private: 4304K    shared: 768000K

最后一行非常重要:

mapped:933712K  映射到文件的内存总量

writeable/private:4304K 私有地址空间的数量

shared:768000K 这个进程与其它共享地址空间的数量

 

19、strace

strace截取和记录系统进程调用,以及进程收到的信号。是一个非常有效的检测、指导和调试工具。系统管理员可以通过该命令容易地解决程序问题。

使用该命令需要指明进程的ID(PID),例如:

strace -p <pid>

# strace –p 2582

20、ulimit

ulimit内置在bash shell中,用来提供对shell和进程可用资源的控制

liyawei:~ # ulimit -a

 

-H和-S选项指明所给资源的软硬限制。如果超过了软限制,系统管理员会收到警告信息。硬限制指在用户收到超过文件句炳限制的错误信息之前,可以达到的最大值。

例如可以设置对文件句炳的硬限制:ulimit -Hn 4096

例如可以设置对文件句炳的软限制:ulimit -Sn 1024

查看软硬值,执行如下命令:

ulimit -Hn

ulimit -Sn

例如限制Oracle用户. 在/etc/security/limits.conf输入以下行:

soft nofile 4096

hard nofile 10240

对于Red Hat Enterprise Linux AS,确定文件/etc/pam.d/system-auth包含如下行

session required /lib/security/$ISA/pam_limits.so

对于SUSE LINUX Enterprise Server,确定文件/etc/pam.d/login 和/etc/pam.d/sshd包含如下行:

session required pam_limits.so

这一行使这些限制生效。

 

21、mpstat

mpstat是Sysstat工具集的一部分,下载地址是http://perso.wanadoo.fr/sebastien.godard/

mpstat用于报告多路CPU主机的每颗CPU活动情况,以及整个主机的CPU情况。

例如,下边的命令可以隔2秒报告一次处理器的活动情况,执行3次

mpstat 2 3

# mpstat 2 3

Linux 2.6.16.21-0.8-default (liyawei)   05/31/07

10:23:03     CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s

10:23:09     all    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00    261.50

Average:     all    0.17    0.00    0.00    0.67    0.00    0.00    0.00   99.17    264.73

如下命令每隔1秒显示一次多路CPU主机的处理器活动情况,执行3次

mpstat -P ALL 1 3

# mpstat -P ALL 1 10

Linux 2.6.16.21-0.8-default (liyawei)   05/31/07

10:23:31     CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s

10:23:34       0    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00    271.00

10:23:35     all    0.00    0.00    0.00    1.98    0.00    0.00    0.00   98.02    254.46

10:23:35       0    0.00    0.00    0.00    1.98    0.00    0.00    0.00 

98.02    254.46