您的位置:首页 > 运维架构 > Linux

linux的程序与资源监控命令

2010-06-22 11:02 218 查看
一 进程信息

1 ps

[root @test /root ]# ps -aux

参数说明:

a : 选择列出所有的程序

u : 列出所有用户的程序

x : 列出所有tty的程序

范例:

[root @test /root]# ps -aux

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.0 0.1 1384 468 ? S Mar31 0:05 init [3]

root 2 0.0 0.0 0 0 ? SW Mar31 0:00 [keventd]

root 3 0.0 0.0 0 0 ? SWN Mar31 0:00 [ksoftirqd_CPU0]

root 4 0.0 0.0 0 0 ? SW Mar31 0:11 [kswapd]

root 5 0.0 0.0 0 0 ? SW Mar31 0:00 [bdflush]

root 6 0.0 0.0 0 0 ? SW Mar31 0:00 [kupdated]

root 130 0.0 0.0 0 0 ? SW Mar31 0:00 [kjournald]

root 131 0.0 0.0 0 0 ? SW Mar31 0:01 [kjournald]

root 132 0.0 0.0 0 0 ? SW Mar31 0:03 [kjournald]

root 133 0.0 0.0 0 0 ? SW Mar31 0:12 [kjournald]

root 482 0.0 0.2 1444 528 ? S Mar31 0:03 syslogd -m 0

........

上面的命令用来查询当前主机环境中在背景执行的相关程序。我通常使用ps -aux参数

列出所有的信息以检查程序。对于上面的程序,说明如下:

· USER:说明该程序属于哪一个用户;

· PID:该程序的代号;

· %CPU:代表该程序使用了多少CPU资源;

%MEM:代表该程序使用了多少RAM;

· VSZ,RSS:占去的RAM的大小(以字节为单位);

· TTY:是否为登入者执行的程序?若为tty1-tty6,则为本机登入者,若为pts/??,则

为远程登入者;

· STAT:该程序的状态,R为可执行,S为该程序正在睡眠中,就是没有执行,T为

正在检测或者停止,Z表示死亡程序,需要用kill除去;

· START:该程序开始的日期;

· TIME:该程序的运行时间;

· COMMAND:该程序的内容。

2 top

[root @test /root ]# top
参数说明:
在执行top的程序中,可以输入下面的字符进行排序
A :以age亦即执行的先后顺序进行排序
T :由启动的时间排序
M :以所占的内存大小排序
P :以所耗用的CPU资源排序
范例:
[root @test /root]# top
11:55pm up 8 days, 7:40, 1 user, load average: 0.22, 0.14, 0.10
71 processes: 69 sleeping, 2 running, 0 zombie, 0 stopped
CPU states: 24.6% user, 3.7% system, 0.0% nice, 71.5% idle
Mem: 255892K av, 222300K used, 33592K free, 0K shrd, 48084K buff
Swap: 289128K av, 8184K used, 280944K free 110472K
cached
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND
9898 root 9 0 5976 5976 1364 S 5.5 2.3 0:00 mrtg
4744 apache 14 0 5312 5052 3764 S 2.1 1.9 0:16 httpd
9189 apache 14 0 4520 4256 3752 S 1.9 1.6 0:01 httpd
9187 apache 10 0 4544 4276 3800 S 1.7 1.6 0:01 httpd
9212 mysql 9 0 7280 4772 2716 S 0.7 1.8 0:00 mysqld
9888 root 12 0 1064 1064 832 R 0.7 0.4 0:00 top
4842 mysql 10 0 7280 4772 2716 S 0.5 1.8 0:06 mysqld
9218 mysql 10 0 7280 4772 2716 S 0.5 1.8 0:00 mysqld
ps是个不错的管理工具,但是ps毕竟不是动态的,使用top则可以用动态(每5秒钟更新
一次)的方式检测程序的运行。而且,在程序运行中,还可以使用P以CPU耗用资源排序、
使用M以内存占用大小排序等,是非常好用的管理工具。

3 mpstat

安装:apt-get install sysstat

与top不同,mpstat可以监控多核的cpu使用率。

(1)当前cpu使用率 mpstat



(2)当前第1个cpu使用率 mpstat 1



(3)cpu使用率,间隔1秒,显示3次 mpstat 1 3



4 kill
[root @test /root ]# kill -signal PID
参数说明:
-signal跟上面的kill一样:

-1 :让该PID重新读取它的配置文件
-9 :杀掉该程序
-15 :停止该程序
范例:
[root @test /root]# kill -9 2380
要杀掉一个程序,自然需要知道该程序的PID。另外,需要注意的是,由于很多程序都
有附属关系,例如sendmail可能会同时开启很多程序(如果邮件数量很大),所以,砍掉子
程序无法将整个程序杀掉。要知道该程序的代号(PID)就得善用ps,top等工具。此外,
您常会发现在一些脚本中写着kill –1 PID,其中的–l是让该PID重新读取配置文件,最常发
现在syslogd这个daemon中。

二 内存信息

1 free
[root @test /root ]# free
参数说明:
-k :以KBytes显示内存
-m :以MBytes显示内存
范例:
[root @test /root]# free
total used free shared buffers cached
Mem: 255892 222076 33816 0 49072 112272
-/+ buffers/cache: 60732 195160
Swap: 289128 7572 281556
另一个查看系统资源的方法是使用free来检查当前内存的使用情况。在上面的例子中,
显示我有256MB的内存,有大约270MB的swap(就是虚拟内存)。

2 sar

看cpu或者内存信息。功能强大。

[root @test /root ]# sar [-u] [-r] 秒数 次数
参数说明:
-u :看CPU的使用情况
-r :看内存的使用情况
秒数:几秒钟观测一次?
次数:共观测几次
范例:
[root @test /root]# sar -u 1 3
12:10:28 AM CPU %user %nice %system %idle
12:10:29 AM all 0.00 0.00 0.00 100.00
12:10:30 AM all 0.00 0.00 0.00 100.00
12:10:31 AM all 12.00 0.00 1.00 87.00
Average: all 4.00 0.00 0.33 95.67
[root @test /root]# sar -r 1 3
12:11:11 AM kbmemfree kbmemused %memused kbmemshrd kbbuffers kbcached
kbswpfree kbswpused %swpused
12:11:12 AM 24416 231476 90.46 0 51068 112536 281556 7572 2.62
12:11:13 AM 24420 231472 90.46 0 51068 112536 281556 7572 2.62
12:11:14 AM 24392 231500 90.47 0 51068 112540 281556 7572 2.62
Average: 24409 231483 90.46 0 51068 112537 281556 7572 2.62
鸟哥很喜欢使用sar查看系统资源,常用它查看CPU与RAM,当然,还可以观察硬盘的
I/O变化。在上面的例子中,观察CPU时可以发现CPU idle的时间很长。另外,在查看RAM
时,比较常用的是%memused(使用的百分比)及%swpused(虚拟内存使用的百分比),
很方便吧,一览无遗!事实上,鸟哥也已经以sar作为MRTG绘制图表的一个工具,很方便。
不过,比较麻烦的是,ubuntu默认没有安装这个套件,

下面比较一下top,sar和mpstat的准确性。每秒显示一次cpu使用率。

#!/bin/sh
#死循环。注意while后的空格
while :
do
sleep 1

#top
cpu_top=$(top -n 1| grep "Cpu"| awk '{print $5}'| awk -F '%' '{print $1}')
#sar
cpu_sar=$(sar -u 1 1| awk 'NR==4 {print $8}')
#mpstat
cpu_mpstat=$(mpstat| awk 'NR==4 {print $11}')
echo  "cpu_top  :   $cpu_top "
echo  "cpu_sar  :   $cpu_sar "
echo  "cpu_mpstat  :   $cpu_mpstat "
done




top和mpstat的缺点是使用top或者mpstat实时刷新时 第一次显示都不是很准,不知道为什么。sar则不会这样。

三 主机的 综合信息

1 在/proc下看看cpu信息:

[root @test root]# more /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 5
model : 4
model name : Pentium MMX
stepping : 4
cpu MHz : 167.047
fdiv_bug : no
hlt_bug : no
f00f_bug : yes
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr mce cx8 mmx
bogomips : 333.41
类似的还有 more /proc/meminfo

2 uname

[root @test /root ]# uname [-apnr]
参数说明:
-a :列出所有的系统信息
-p :列出CPU信息
-n :列出主机名
-r :列出核心版本信息
范例:
[root @test /root]# uname -a
Linux test.linux.org 2.4.18 #2 Mon Mar 25 21:51:51 CST 2002 i586 unknown
想知道您的系统信息,包括核心版本、主机名称、CPU信息等,可以使用uname。另外,
如果对您的CPU有兴趣,不妨在/proc下看看:
[root @test root]# more /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 5
model : 4
model name : Pentium MMX
stepping : 4
cpu MHz : 167.047
fdiv_bug : no
hlt_bug : no
f00f_bug : yes
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr mce cx8 mmx
bogomips : 333.41
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: