首頁 > 軟體

Linux系統ps命令使用教學

2020-06-16 16:48:00

要對Linux系統中進程進行監測控制,檢視狀態,記憶體,CPU的使用情況,使用命令:/bin/ps

(1) ps :是顯示瞬間進程的狀態,並不動態連續;
(2) top:如果想對進程執行時間監控,應該用 top 命令;
(3) kill 用於殺死進程或者給進程傳送信號;
(4) 檢視文章最後的man手冊,可以檢視ps的每項輸出的含義,to find: STANDARD FORMAT SPECIFIERS

==============ps 的引數說明==============

l 長格式輸出;
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 輸出的解釋==============

2、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去查詢特定的進程,然後再對特定的進程進行操作。

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

本文永久更新連結地址https://www.linuxidc.com/Linux/2018-08/153667.htm


IT145.com E-mail:sddin#qq.com