LINUX系统监控常用命令


1.进程监控(TOP)

Linux下的Top命令是一个性能监控程序,用来监控Linux性能,在许多Linux或者类Unix操作系统里都有这个命令。

Top命令用于按一定的顺序显示所有正在运行而且处于活动状态的实时进程,而且会定期更新显示结果。这条命令显示了CPU的使用率、内存使用率、交换内存使用大小、高速缓存使用大小、缓冲区使用大小,进程PID、所使用命令以及其他。它还可以显示正在运行进程的内存和CPU占用多的情况。

进程PID,进程用户,CPU使用率,内存使用率、交换内存使用大小等等信息。top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.

root@kallen:/home/kallen/ShScript# top

top -15:55:07 up 2:15,4 users, load average:0.00,0.01,0.05

Tasks:152 total,1 running,150 sleeping,0 stopped,1 zombie

Cpu(s):0.0%us,0.2%sy,0.0%ni,99.8%id,0.0%wa,0.0%hi,0.0%si

Mem:507316k total,473492k used,33824k free,17976k buffer

Swap:2095100k total,4848k used,2090252k free,153480k cached

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+ COMMAND 

3082 root 20   0  2852 1172  880 R 1  0.2   0:00.04 top 

2773 root 20   0 10120 3500 2788 S 1  0.7   0:01.39 sshd 

1574 ntp 20   0  5744 1996 1544 S 0  0.4   0:01.82 ntpd 

1 root 20   0  3664 1856 1320 S 0  0.4   0:03.13 init 

2 root 20   0     0    0    0 S 0  0.0   0:00.00 kthreadd

2.虚拟内存统计(vmstat)

Linux 的 VmStat 命令用于显示虚拟内存、内核线程、磁盘、系统进程、I/O 块、中断、CPU 活动 等的统计信息。

一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数。

[root@kallen ~]$ vmstat

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

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

1  0  4848  23452  19024 157328   0   0    10    3   8  11  0  0  99  1

测试参数讲解:

r       表示运行队列,如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高

b       表示阻塞的进程数

swpd    虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,

 如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器

free    空闲的物理内存的大小

buff    系统占用的缓存大小

cache   直接用来记忆我们打开的文件,给文件做缓冲

si      每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了

us      用户CPU时间

sy      系统CPU时间

so      每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。

sy      系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。

id      空闲 CPU时间,一般来说,id + us + sy =100

wt      等待IO CPU时间。

3.列出打开的文件(lsof)

它常用于以列表的形式显示所有打开的文件和进程。打开的文件包括磁盘文件、网络套接字、管道、设备和进程。

使用这条命令的主要情形之一就是在无法挂载磁盘和显示正在使用或者打开某个文件的错误信息的时候。使用这条命令,你可以很容易地看到正在使用哪个文件.

4.网络包分析器(tcpdump)

Tcpdump是最广泛使用的网络包分析器或者包监控程序之一,它用于捕捉或者过滤网络上指定接口上接收或者传输的TCP/IP包。它还有一个选项用于把捕捉到的包保存到文件里,以便以后进行分析。

-h:查看命令帮助
-i:网络接口
-c:需要输出包数量
 [root@kallen ~]$ tcpdump -i eth0 -c 2
tcpdump: verbose output suppressed, use -v or-vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
17:09:43.797433 IP kallen.local.ssh >172.16.1.208.35949: 
Flags [P.], seq 1248794718:1248794914, ack 202785226, win 3107, length 196
17:09:43.802854 IP kallen.local.13489> google-public-dns-a.google.com.domain: 
28919+ PTR? 208.1.16.172.in-addr.arpa. (43)
2 packets captured
29 packets received by filter
0 packets dropped by kernel

Tcpdump命令参数及选项:

[root@kallen conf]# tcpdump -h
tcpdump version 4.1-PRE-CVS_2012_02_01
libpcap version 1.4.0
Usage: tcpdump [-aAdDefIKlLnNOpqRStuUvxX] [ -B size ] [ -c count ]
[ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
[ -i interface ] [ -M secret ] [ -r file ] 
[ -s snaplen ] [ -T type] [ -w file ] [ -W filecount ]
[ -y datalinktype ] [ -z command ] [ -Z user ] 
[ expression ]

5.网络状态统计(netstat)

Netstat用于监控进出网络包和网络接口统计,可以用来监控网络性能,定位并解决网络相关问题.

[root@kallen Kallen]# netstat -r

Kernel IP routing table

Destination     Gateway         Genmask     Flags   MSS Window  irtt Iface

172.16.1.0 *255.255.255.0 U 0 0       0 eth0

172.16.1.0 *255.255.255.0 U 0 0       0 eth1 

link-local *255.255.0.0 U 0 0       0 eth0

link-local *255.255.0.0 U 0 0       0 eth1

default 172.16.1.1    0.0.0.0 UG 0    0   0 eth0

6.实时局域网IP监控(IPTraf)

IPTraf是一个在Linux控制台运行的、开放源代码的实时网络(局域网)监控应用。它采集了大量信息,比如通过网络的IP流量监控,包括TCP标记、ICMP详细信息、TCP/UDP流量分离、TCP连接包和字节数。

同时还采集有关接口状态的常见信息和详细信息:TCP、UDP、IP、ICMP、非IP,IP校验和错误,接口活动等。

IPTraf

相关内容