一天一点学习Linux之RHEL6系统进程管理之二进程观察ps命令

来源:岁月联盟 编辑:exp 时间:2011-10-25

 

常用参数:

a  显示所有用户的所有进程(包括其它用户);

u  按用户名和启动时间的顺序来显示进程;

x  显示无控制终端的进程;

 

e  显示所有进程,包括没有控制端的进程;

f  用树形格式来显示进程;

 

l  长格式输出;

w  为了避免详细参数被截断,可以用多个w来让其显示完整(比如说ww或者是www);

 

o  需要查看的选项

 

 

常用的是aux ef

 

下面介绍一下ps输出的参数内容

 

USER             进程的属主;

PID               进程的ID;

PPID                     父进程;

%CPU                    进程占用的CPU百分比;

%MEM                  占用内存的百分比;

NI                 进程的NICE值,也就是进程的优先值(-20~19之间),数值越大,优先级越底;

VSZ               进程虚拟大小;

RS                 驻留中页的数量;

TTY                     终端ID。问号表示是无终端的,也就是系统本身。

STAT                     进程状态

        D Uninterruptible sleep (usually IO)

       R 正在运行可中在队列中可过行的;

       S 处于休眠状态;

       T 停止或被追踪;

       W 进入内存交换(从内核2.6开始无效);

       X 死掉的进程(从来没见过);

       Z 僵尸进程;

       < 优先级高的进程

       N 优先级较低的进程

       L 有些页被锁进内存;

       s 进程的领导者(在它之下有子进程);

       l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)

       + 位于后台的进程组;

WCHAN         正在等待的进程资源;

START           启动进程的时间;

TIME             进程消耗CPU的时间;

COMMAND          命令的名称和参数;

ps应用举例

 

ps aux |more

因为ps aux显示出来的内容太多,所以可以接管道,来分页查看或者是把结果生成文件

 

pa aux > ps.file

查询某个程序的进程

ps aux |grep httpd

 

[root@yufei ~]# ps aux |grep httpd

root      1470  0.0  4.1 281892 10220 ?        Ss   19:50   0:00 /usr/sbin/httpd

apache    1494  0.0  2.2 281892  5548 ?        S    19:50   0:00 /usr/sbin/httpd

apache    1495  0.0  2.2 281892  5548 ?        S    19:50   0:00 /usr/sbin/httpd

apache    1496  0.0  2.2 281892  5548 ?        S    19:50   0:00 /usr/sbin/httpd

apache    1497  0.0  2.2 281892  5548 ?        S    19:50   0:00 /usr/sbin/httpd

apache    1498  0.0  2.2 281892  5548 ?        S    19:50   0:00 /usr/sbin/httpd

apache    1499  0.0  2.2 281892  5548 ?        S    19:50   0:00 /usr/sbin/httpd

apache    1500  0.0  2.2 281892  5548 ?        S    19:50   0:00 /usr/sbin/httpd

apache    1501  0.0  2.2 281892  5548 ?        S    19:50   0:00 /usr/sbin/httpd

root      1613  0.0  0.3 103232   872 pts/0    S+   19:52   0:00 grep httpd

显示某个程序的进程树情况

 

ps auxf  |grep httpd

下面是例子

[root@yufei ~]# ps auxf |grep httpd

root      1615  0.0  0.3 103228   864 pts/0    S+   19:53   0:00          /_ grep httpd

root      1470  0.0  4.1 281892 10220 ?        Ss   19:50   0:00 /usr/sbin/httpd

apache    1494  0.0  2.2 281892  5548 ?        S    19:50   0:00  /_ /usr/sbin/httpd

apache    1495  0.0  2.2 281892  5548 ?        S    19:50   0:00  /_ /usr/sbin/httpd

apache    1496  0.0  2.2 281892  5548 ?        S    19:50   0:00  /_ /usr/sbin/httpd

apache    1497  0.0  2.2 281892  5548 ?        S    19:50   0:00  /_ /usr/sbin/httpd

apache    1498  0.0  2.2 281892  5548 ?        S    19:50   0:00  /_ /usr/sbin/httpd

apache    1499  0.0  2.2 281892  5548 ?        S    19:50   0:00  /_ /usr/sbin/httpd

apache    1500  0.0  2.2 281892  5548 ?        S    19:50   0:00  /_ /usr/sbin/httpd

apache    1501  0.0  2.2 281892  5548 ?        S    19:50   0:00  /_ /usr/sbin/httpd

从上面的结果,我们可以很清楚的看到,apache用户的进程全部是由/usr/sbin/httpd来而的,所以只要停止掉他,那么其他的进程也就自动停止了。

 

[root@yufei ~]# kill 1470

[root@yufei ~]# ps auxf |grep httpd

root      1617  0.0  0.3 103228   864 pts/0    S+   19:56   0:00          /_ grep httpd

我们发现httpd这个进程已经没有了。

 

显示进程的某些选项

 

ps axo pid,%cpu,%mem,comm |grep httpd

先来启动httpd

 

[root@yufei ~]# service httpd start

Starting httpd:                                            [  OK  ]

下面就是查看某个进程的某些选项

 

[root@yufei ~]# ps axo pid,%cpu,%mem,comm |grep httpd

1628  0.0  4.1 httpd

1630  0.0  2.2 httpd

1631  0.0  2.2 httpd

1632  0.0  2.2 httpd

1633  0.0  2.2 httpd

1634  0.0  2.2 httpd

1635  0.0  2.2 httpd

1636  0.0  2.2 httpd

1637  0.0  2.2 httpd

是不是很方便,很实用啊!

 

这里,我们还需要来了解一下什么是僵尸进程。通常,造成僵尸进程的成因是因为该进程应该已经执行完毕,或者是因故应该要终止了, 但是该进程的父进程却无法完整的将该进程结束掉,而造成那个进程一直存在内存当中。如果你发现在某个进程的CMD 后面还接上<defunct> 时,就代表该进程是僵尸进程。当系统不稳定的时候就容易造成所谓的僵尸进程。也有可能是因为程序写的不完善,或者是使用者的操作习惯不良等等所造成。如果你发现系统中很多僵尸进程时,记得要找出该进程的父进程,然后做个跟踪排除问题!

摘自 羽飞博客