Linux下PS命令詳解

要對系統中進程進行監測控制,查看狀態,內存,CPU的使用狀況,使用命令:/bin/psshell

(1)         ps :是顯示瞬間進程的狀態,並不動態連續;bash

(2)         top:若是想對進程運行時間監控,應該用 top 命令;session

(3)         kill 用於殺死進程或者給進程發送信號;app

(4)        查看文章最後的man手冊,能夠查看ps的每項輸出的含義,to find: STANDARD FORMAT SPECIFIERSide

===================================ps 的參數說明=============================ui

l 長格式輸出;spa

u 按用戶名和啓動時間的順序來顯示進程;命令行

j 用任務格式來顯示進程;排序

f 用樹形格式來顯示進程;隊列

a 顯示全部用戶的全部進程(包括其它用戶);

x 顯示無控制終端的進程;

r 顯示運行中的進程;

ww 避免詳細參數被截斷;


-A 列出全部的進程
-w 顯示加寬能夠顯示較多的資訊
-au 顯示較詳細的資訊
-aux 顯示全部包含其餘使用者的進程

-e 顯示全部進程,環境變量
-f 全格式
-h 不顯示標題
-l 長格式
-w 寬輸出
a   顯示終端上地全部進程,包括其餘用戶地進程
r   只顯示正在運行地進程
x   顯示沒有控制終端地進程

咱們經常使用的選項是組合是 aux 或 lax,還有參數 f 的應用。
pids 只列出進程標識符,之間運用逗號分隔.該進程列表必須在命令行參數地最後一個選項後面緊接着給出,中間不能插入空格.好比:ps -f1,4,5 顯示的是進程ID爲1,4,5的進程

下介紹長命令行選項,這些選項都運用「--」開頭:
--sort X[+|-] key [,[+|-] key [,…]] 從SORT KEYS段中選一個多字母鍵.+」字符是可選地,由於默認地方向就是按數字升序或者詞典順序,「-」字符是逆序排序(即降序).

好比: ps -jax -sort=uid,-ppid,+pid.
--help 顯示幫助信息.
--version 顯示該命令地版本信息.

在前面地選項說明中提到了排序鍵,接下來對排序鍵做進一步說明.須要注意地是排序中運用地值是ps運用地內部值,並不是僅用於某些輸出格式地僞值.排序鍵列表見下表.

============排序鍵列表==========================
c cmd   可執行地簡單名稱 
C cmdline   完整命令行 
f flags   長模式標誌 
g pgrp   進程地組ID 
G tpgid   控制tty進程組ID 
j cutime   累計用戶時間 
J cstime   累計系統時間 
k utime   用戶時間 
K stime   系統時間 
m min_flt   次要頁錯誤地數量 
M maj_flt   重點頁錯誤地數量 
n cmin_flt 累計次要頁錯誤 
N cmaj_flt 累計重點頁錯誤 
o session   對話ID 
p pid   進程ID 
P ppid   父進程ID 
r rss   駐留大小 
R resident 駐留頁 
s size   內存大小(千字節) 
S share   共享頁地數量 
t tty   tty次要設備號 
T start_time 進程啓動地時間 
U uid   UID
u user   用戶名
v vsize   總地虛擬內存數量(字節) 
y priority 內核調度優先級
========================================ps aux 或 lax 輸出的解釋=========================

二、ps aux 或 lax 輸出的解釋

au(x) 輸出格式 : 
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

USER: 進程全部者
PID: 進程ID

%CPU: 佔用的 CPU 使用率
%MEM: 佔用的內存使用率
VSZ: 佔用的虛擬內存大小
RSS: 佔用的內存大小

TTY: 終端的次要裝置號碼 (minor device number of tty)

STAT: 進程狀態:

START: 啓動進程的時間; 
TIME: 進程消耗CPU的時間;
COMMAND:命令的名稱和參數;

=========================================進程STAT狀態==================================

D 沒法中斷的休眠狀態(一般 IO 的進程); 
R 正在運行,在可中斷隊列中; 
S 處於休眠狀態,靜止狀態; 
T 中止或被追蹤,暫停執行; 
W 進入內存交換(從內核2.6開始無效); 
X 死掉的進程; 
Z 殭屍進程不存在但暫時沒法消除;

W: 沒有足夠的記憶體分頁可分配
WCHAN 正在等待的進程資源;

<: 高優先級進程
N: 低優先序進程
L: 有記憶體分頁分配並鎖在記憶體內 (即時系統或捱A I/O),即,有些頁被鎖進內存

s 進程的領導者(在它之下有子進程); 
l 多進程的(使用 CLONE_THREAD, 相似 NPTL pthreads); 
+ 位於後臺的進程組;

========================================kill 終止進程================================

kill 終止進程

有十幾種控制進程的方法,下面是一些經常使用的方法:

kill -STOP [pid] 
發送SIGSTOP (17,19,23)中止一個進程,而並不消滅這個進程。

kill -CONT [pid] 
發送SIGCONT (19,18,25)從新開始一箇中止的進程。

kill -KILL [pid] 
發送SIGKILL (9)強迫進程當即中止,而且不實施清理操做。

kill -9 -1 
終止你擁有的所有進程。

SIGKILL 和 SIGSTOP 信號不能被捕捉、封鎖或者忽略,可是,其它的信號能夠。因此這是你的終極武器。

==================================================範例==============================

$ ps
PID TTY TIME COMMAND
5800 ttyp0 00:00:00 bash
5835 ttyp0 00:00:00 ps
能夠看到,顯示地項目共分爲四項,依次爲PID(進程ID)、TTY(終端名稱)、TIME(進程執行時 間)、COMMAND(該進程地命令行輸入).

能夠運用u選項來查看進程全部者及其餘少量詳細信息,以下所示:
$ ps u
USER PID %CPU %MEM USZ RSS TTY STAT START TIME COMMAND
test 5800 0.0 0.4 1892 1040 ttyp0 S Nov27 0:00 -bash
test 5836 0.0 0.3 2528 856 ttyp0 R Nov27 0:00 ps u

bash進程前面有條橫線,意味着該進程即是用戶地登陸shell,因此對於一個登陸用戶來講帶短橫線地進程只有一個.還能夠看 到%CPU、%MEM兩個選項,前者指該進程佔用地CPU時間

和總時間地百分比;後者指該進程佔用地內存和總內存地百分比.
在這種狀況下看到了全部控制終端地進程;固然對於其餘那些沒有控制終端地進程 仍是沒有觀察到,因此這時就須要運用x選項.運用x選項能夠觀察到全部地進程狀況.

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去查找特定的進程,而後再對特定的進程進行操做。

相關文章
相關標籤/搜索