歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> RHEL6系統進程管理之進程觀察ps命令

RHEL6系統進程管理之進程觀察ps命令

日期:2017/2/28 15:50:08   编辑:Linux教程

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

[[email protected] ~]# 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
下面是例子
[[email protected] ~]# 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來而的,所以只要停止掉他,那麼其他的進程也就自動停止了。

[[email protected] ~]# kill 1470
[[email protected] ~]# 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

[[email protected] ~]# service httpd start
Starting httpd: [ OK ]下面就是查看某個進程的某些選項

[[email protected] ~]# 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 © Linux教程網 All Rights Reserved