一 进程信息
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