1. 程式人生 > >shell中的ps命令詳解

shell中的ps命令詳解

ps簡介:

Linux中的ps命令是Process Status的縮寫。ps命令用來列出系統中當前執行的那些程序。ps命令列出的是當前那些程序的快照,就是執行ps命令的那個時刻的那些程序,如果想要動態的顯示程序資訊,就可以使用top命令。要對程序進行監測和控制,首先必須要了解當前程序的情況,也就是需要檢視當前程序,而 ps 命令就是最基本同時也是非常強大的程序檢視命令。使用該命令可以確定有哪些程序正在執行和執行的狀態、程序是否結束、程序有沒有僵死、哪些程序佔用了過多的資源等等。總之大部分資訊都是可以通過執行該命令得到的。

對系統中程序進行監測控制,檢視狀態,記憶體,CPU的使用情況,使用命令:/bin/ps
(1) ps :是顯示瞬間程序的狀態,並不動態連續;
(2) top:如果想對程序執行時間監控,應該用 top 命令;



ps 為我們提供了程序的一次性的檢視,它所提供的檢視結果並不動態連續的;如果想對程序時間監控,應該用 top 工具

命令列格式:

名稱:ps
使用許可權:所有使用者
使用方式:ps [options] [--help]
說明:顯示瞬間行程 (process) 的動態
引數:ps的引數非常多, 在此僅列出幾個常用的引數並大略介紹含義
-A 列出所有的程序
-w 顯示加寬可以顯示較多的資訊
-au 顯示較詳細的資訊
-aux 顯示所有包含其他使用者的行程

ps命令常用用法:

(方便檢視系統程序)

1)ps a 顯示現行終端機下的所有程式,包括其他使用者的程式。
2)ps -A 顯示所有程序。
3)ps c 列出程式時,顯示每個程式真正的指令名稱,而不包含路徑,引數或常駐服務的標示。
4)ps -e 此引數的效果和指定"A"引數相同。
5)ps e 列出程式時,顯示每個程式所使用的環境變數。
6)ps f 用ASCII字元顯示樹狀結構,表達程式間的相互關係。
7)ps -H 顯示樹狀結構,表示程式間的相互關係。
8)ps -N 顯示所有的程式,除了執行ps指令終端機下的程式之外。
9)ps s 採用程式訊號的格式顯示程式狀況。
10)ps S 列出程式時,包括已中斷的子程式資料。
11)ps -t<終端機編號>  指定終端機編號,並列出屬於該終端機的程式的狀況。
12)ps u  以使用者為主的格式來顯示程式狀況。
13)ps x  顯示所有程式,不以終端機來區分。

最常用的方法是ps -aux,然後再利用一個管道符號導向到grep去查詢特定的程序,然後再對特定的程序進行操作。

ps常用引數舉例:

1,基本ps使用:

$ ps


結果預設會顯示4列資訊。

PID: 執行著的命令(CMD)的程序編號
TTY: 命令所執行的位置(終端)
TIME: 執行著的該命令所佔用的CPU處理時間
CMD: 該程序所執行的命令
這些資訊在顯示時未排序。

2,列出目前所有的正在記憶體當中的程式。也許你希望把結果按照 CPU 或者記憶體用量來篩選,這樣你就找到哪個程序佔用了你的資源。要做到這一點,我們可以使用 aux 引數,來顯示全面的資訊:

$ ps -aux


Head標頭:
USER 使用者名稱
UID 使用者ID(User ID)
PID 程序ID(Process ID)
PPID 父程序的程序ID(Parent Process id)
SID 會話ID(Session id)
%CPU 程序的cpu佔用率
%MEM 程序的記憶體佔用率
VSZ 程序所使用的虛存的大小(Virtual Size)
RSS 程序使用的駐留集大小或者是實際記憶體的大小,Kbytes位元組。
TTY 與程序關聯的終端(tty)
STAT 程序的狀態:程序狀態使用字元表示的(STAT的狀態碼)
R 執行 Runnable (on run queue) 正在執行或在執行佇列中等待。
S 睡眠 Sleeping 休眠中, 受阻, 在等待某個條件的形成或接受到訊號。
I 空閒 Idle
Z 僵死 Zombie(a defunct process) 程序已終止, 但程序描述符存在, 直到父程序呼叫wait4()系統呼叫後釋放。
D 不可中斷 Uninterruptible sleep (ususally IO) 收到訊號不喚醒和不可執行, 程序必須等待直到有中斷髮生。
T 終止 Terminate 程序收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU訊號後停止執行執行。
P 等待交換頁
W 無駐留頁 has no resident pages 沒有足夠的記憶體分頁可分配。
X 死掉的程序
< 高優先順序程序 高優先序的程序
N 低優先 級程序 低優先序的程序
L 記憶體鎖頁 Lock 有記憶體分頁分配並縮在記憶體內
s 程序的領導者(在它之下有子程序);
l 多程序的(使用 CLONE_THREAD, 類似 NPTL pthreads)
+ 位於後臺的程序組
START 程序啟動時間和日期
TIME 程序使用的總cpu時間
COMMAND 正在執行的命令列命令
NI 優先順序(Nice)
PRI 程序優先順序編號(Priority)
WCHAN 程序正在睡眠的核心函式名稱;該函式的名稱是從/root/system.map檔案中獲得的。
FLAGS 與程序相關的數字標識

4. 可以用 | 管道和 more 連線起來分頁檢視。
命令:ps -aux |more


5. 把所有程序顯示出來,並輸出到ps001.txt檔案
命令:ps -aux > ps001.txt


6. 輸出指定的欄位
命令:ps -o pid,ppid,pgrp,session,tpgid,comm

7,根據 CPU 使用來升序排序

$ ps -aux --sort -pcpu | less

8,根據 記憶體使用 來升序排序
$ ps -aux --sort -pmem | less

9,樹形顯示程序

$ pstree

10,檢視特定使用者程序

在需要檢視特定使用者程序的情況下,我們可以使用 -u 引數。比如我們要檢視使用者'pungki'的程序,可以通過下面的命令:

$ ps -u pungki

11,通過程序名和PID過濾
使用 -C 引數,後面跟你要找的程序的名字。比如想顯示一個名為getty的程序的資訊,就可以使用下面的命令:

$ ps -C getty

12,顯示所有程序資訊,連同命令列

命令:ps -ef