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

2011年08月31日 Linux基础 暂无评论 阅读 9,386 views 次

ps:Linux系统中的进程查看命令
常用参数:
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> 时,就代表该进程是僵尸进程。当系统不稳定的时候就容易造成所谓的僵尸进程。也有可能是因为程序写的不完善,或者是使用者的操作习惯不良等等所造成。如果你发现系统中很多僵尸进程时,记得要找出该进程的父进程,然后做个跟踪排除问题!

给我留言

Copyright © 羽飞博客 保留所有权利.   Ality主题 皖ICP备14013844号-1

用户登录