centos上程序有5種狀態:
1. 執行(正在執行或在執行佇列中等待)
2. 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到訊號)
3. 不可中斷(收到訊號不喚醒和不可執行, 程序必須等待直到有中斷發生)
4. 僵死(程序已終止, 但程序描述符存在, 直到父程序呼叫wait4()系統呼叫後釋放)
5. 停止(程序收到sigstop, sigstp, sigtin, sigtou訊號後停止執行執行)
ps工具標識程序的5種狀態碼:
d 不可中斷 uninterruptible sleep (usually io)
r 執行 runnable (on run queue)
s 中斷 sleeping
t 停止 traced or stopped
z 僵死 a defunct (」zombie」) process
名稱:ps
使用許可權:所有使用者
使用方式:ps [options] [–help]
說明:顯示瞬間行程 (process) 的動態
引數:ps 的引數非常多, 在此僅列出幾個常用的引數並大略介紹含義
-a 列出所有的行程
-w 顯示加寬可以顯示較多的資訊
-au 顯示較詳細的資訊
-aux 顯示所有包含其他使用者的行程
au(x) 輸出格式 :
圖例:
user pid %cpu %mem vsz rss tty stat start time command
user: 行程擁有者
pid: pid
%cpu: 占用的 cpu 使用率
%mem: 占用的記憶體使用率
vsz: 占用的虛擬記憶體大小
rss: 占用的記憶體大小
tty: 終端的次要裝置號碼 (minor device number of tty)
stat: 該行程的狀態:
d: 不可中斷的靜止
r: 正在執行中
s: 靜止狀態
t: 暫停執行
z: 不存在但暫時無法消除
w: 沒有足夠的記憶體分頁可分配
<:>
n: 低優先序的行程
l: 有記憶體分頁分配並鎖在記憶體內 (即時系統或挨a i/o)
start: 行程開始時間
time: 執行的時間
command:所執行的指令
範例:ps
pid tty time cmd
2791 ttyp0 00:00:00 tcsh
3092 ttyp0 00:00:00 ps
% ps -a
pid tty time cmd
1 ? 00:00:03 init
2 ? 00:00:00 kflushd
3 ? 00:00:00 kpiod
4 ? 00:00:00 kswapd
5 ? 00:00:00 mdrecoveryd
…….% ps -aux
user pid %cpu %mem vsz rss tty stat start time command
root 1 0.0 0.7 1096 472 ? s sep10 0:03 init [3]
root 2 0.0 0.0 0 0 ? sw sep10 0:00 [kflushd]
root 3 0.0 0.0 0 0 ? sw sep10 0:00 [kpiod]
root 4 0.0 0.0 0 0 ? sw sep10 0:00 [kswapd]
具體命令解釋如下:
1)ps a 顯示現行終端機下的所有程式,包括其他使用者的程式。
2)ps -a 顯示所有程式。
3)ps c 列出程式時,顯示每個程式真正的指令名稱,而不包含路徑,引數或常駐服務的標示。
4)ps -e 此引數的效果和指定」a」引數相同。 例如: ps -e|grep sshd
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中top與ps區別
一:ps命令
以下是 ps 的最簡單形式:
$ ps
pid tty time cmd
3884 pts/1 00:00:00 bash
3955 pts/2 00:00:00 more
3956 pts/5 00:00:05 sqlplus
• pid 是程序的標識號。
• tty 是程序所屬的終端控制台。
• time 列是程序所使用的總的 cpu 時間。
• cmd 列列出正在執行的命令列。
使用帶有 -ef 選項的 ps,返回系統中所有使用者的所有程序的完整列表。一般將此 ps 命令的結果傳送到 grep 中,則該結果更易於檢視。例如:
$ ps -ef | grep oracle
uid pid ppid c stime tty time cmd
oracle 1633 1 0 13:58 ?00:00:00 ora_pmon_ora1
oracle 1635 1 0 13:58 ?00:00:00 ora_dbw0_ora1
oracle 1637 1 0 13:58 ?00:00:01 ora_lgwr_ora1
oracle 1639 1 0 13:58 ?00:00:02 ora_ckpt_ora1
oracle 1641 1 0 13:58 ?00:00:02 ora_smon_ora1
oracle 1643 1 0 13:58 ?00:00:00 ora_reco_ora1
oracle 1645 1 0 13:58 ?00:00:00 ora_cjq0_ora1
oracle 1647 1 0 13:58 ?00:01:18 ora_qmn0_ora1
oracle 1649 1 0 13:58 ?00:00:00 ora_s000_ora1
oracle 1651 1 0 13:58 ?00:00:00 ora_d000_ora1
-e : 在命令執行後顯示環境
-f : 完整顯示輸出
• 標為 c 的列是由 cpu 用於計算執行優先順序的因子。
• stime 是指程序的啟動時間。
• 問號表示這些程序不屬於任何 tty,因為它們是由系統啟動的。
主要引數說明:
1) 程序使用者id(uid),
雖然 uid 通常是指數字型的標識,但在第一列下指定的是使用者名稱,標記為 uid
2) 程序id (pid)
3) 父程序id (ppid)
ppid 是父程序的標識號。對於 oracle 程序,這裡的標識號為 1 — 它是 init 程序(所有程序的父程序)的 id,因為在本系統中安裝的 oracle 是作為登入程序的一部分而啟動的
4) cpu 排程情況 (c)
即是是由 cpu 用於計算執行優先順序的因子。
5) 程序啟動的時間 (stime)
6) 程序共占用cpu的時間(time)
7) 啟動程序的命令 (cmd)
8)問號表示這些程序不屬於任何 tty,因為它們是由系統啟動的。
使用ps命令分析系統效能的方法主要有:
1) 首先,根據使用者id尋找由同一使用者執行的許多相似任務,這些任務很可能是因為使用者執行的某個指令碼程式在後台啟動多個程序而造成的。
2) 接下來,檢查time域中各程序累計占用cpu的時間,如果有某個程序累計占用了大量的cpu時間,通常說明該程序可能陷入了無限迴圈,或該京城的某寫邏輯出了錯
3) 找到那些已陷入死鎖的程序id後,就可以使用kill命令強制終止該程序了。
Linux系統ps命令詳解
ps命令 輸出程序資訊 靜態顯示 aux 引數 顯示完整資訊 ef 引數 顯示資訊沒有aux詳細 一般用於查詢程序的pid,kill程序 使用 user 啟動程序的使用者 pid 程序號 stat 程序狀態 start 啟動時間 time 執行了多久 command 程序名 根據程序號殺程序 roo...
ps命令詳解
平時linux程序檢視還是比較常用的,於是我研究了一下linux ps命令的使用方式,在這裡拿出來和大家分享一下,希望對大家有用。linux監控工具大全 1.ps簡介前面介紹的兩個命令 who w命令 都是用於檢視當前系統使用者的情況,下面就來看看程序的情況,這也是本章的主題。要對程序進行監測和控制...
PS命令詳解
要對程序進行監測和控制,首先必須要了解當前程序的情況,也就是需要檢視當前程序,ps命令就是最基本程序檢視命令。使用該命令可 以確定有哪些程序正在執行和執行的狀態 程序是否結束 程序有沒有殭屍 哪些程序占用了過多的資源等等.總之大部分資訊都是可以通過執行該命令得到。ps是顯示瞬間程序的狀態,並不動態連...