Linux中ps命令詳解
原文地址:http://blog.csdn.net/x_i_y_u_e/article/details/38708481
按第三列(cpu)使用量,觀察程式資訊:
ps auxw|sort -k3 -rn|head -20
- 執行(正在執行或在執行佇列中等待)
- 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到訊號)
- 不可中斷(收到訊號不喚醒和不可執行, 程式必須等待直到有中斷髮生)
- 僵死(程式已終止, 但程式描述符存在, 直到父程式呼叫wait4()系統呼叫後釋放)
- 停止(程式收到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]
具體命令解釋如下:
- ps a 顯示現行終端機下的所有程式,包括其他使用者的程式。
- ps -A 顯示所有程式。
- ps c 列出程式時,顯示每個程式真正的指令名稱,而不包含路徑,引數或常駐服務的標示。
- ps -e 此引數的效果和指定"A"引數相同。 例如: ps -e|grep sshd
- ps e 列出程式時,顯示每個程式所使用的環境變數。
- ps f 用ASCII字元顯示樹狀結構,表達程式間的相互關係。
- ps -H 顯示樹狀結構,表示程式間的相互關係。
- ps -N 顯示所有的程式,除了執行ps指令終端機下的程式之外。
- ps s 採用程式訊號的格式顯示程式狀況。
- ps S 列出程式時,包括已中斷的子程式資料。
- ps -t<終端機編號>
- 指定終端機編號,並列出屬於該終端機的程式的狀況。
- ps u
- 以使用者為主的格式來顯示程式狀況。
- ps x
- 顯示所有程式,不以終端機來區分。
- 最常用的方法是ps -aux,然後再利用一個管道符號導向到grep去查詢特定的程式,然後再對特定的程式進行操作。
附:中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命令強制終止該程式了。
二:top命令
Ps 只為您提供當前程式的快照。要即時檢視最活躍的程式,可使用 top。
Top 實時地提供程式資訊。它還擁有互動式的狀態,允許使用者輸入命令,如 n 後面跟有 5 或 10 等數字。其結果是指示 top 顯示 5 或 10 個最活躍的程式。 Top 持續執行,直到您按 "q" 退出 top 為止。
Top中的幾個隱含引數: top -help
top中按1鍵和F鍵的引數:
按1鍵可以等到多個cpu的情況
按F(f:當前狀態,可以按相應的字母鍵做top的定製輸出)後得引數:
對F鍵和f鍵的區別:
如果進入F鍵區可以做程式顯示的排序,如果進入f鍵區的話則可以選擇顯示的多個專案:
- * A: PID = Process Id //程式ID
- b: PPID = Parent Process Pid //父程式ID
- c: RUSER = Real user name //真正的(Real)所屬使用者名稱稱
- d: UID = User Id //使用者ID
- e: USER = User Name //使用者名稱稱
- f: GROUP = Group Name //組名稱
- g: TTY = Controlling Tty //控制
- h: PR = Priority //優先權
- i: NI = Nice value //優先順序得值(負數代表較高的優先順序,正數是較低的優先順序.0標誌改優先順序的值是不會被調整的)
- j: #C = Last used cpu (SMP) //隨後使用的cpu比率
- k: %CPU = CPU usage //cpu使用比率
- l: TIME = CPU Time //cpu佔用時間
- m: TIME+ = CPU Time, hundredths //cpu%比
- n: %MEM = Memory usage (RES) //記憶體使用率
- o: VIRT = Virtual Image (kb) //虛擬映象(VIRT = SWAP + RES:所有程式使用的虛擬記憶體值,包括所有的程式碼,資料,共享庫已經被swapped out的)
- p: SWAP = Swapped size (kb) //交換空間大小(所有虛擬記憶體中的映象)
- q: RES = Resident size (kb) //已經使用了的常駐記憶體(Resident size):RES = CODE + DATA
- r: CODE = Code size (kb) //分配給執行程式碼的實體記憶體
- s: DATA = Data+Stack size (kb) //data+stack:實體記憶體中非存放程式碼的空間,用於存放資料
- t: SHR = Shared Mem size (kb) //共享記憶體大小.放映了一個task的潛在可以供別人使用的記憶體的大小
- u: nFLT = Page Fault count //記憶體頁錯誤的數量
- v: nDRT = Dirty Pages count //髒頁的數量
- w: S = Process Status //程式狀態:( R )為執行或可執行的,( S )為該程式正在睡眠中,( T )正在偵測或者是停止了,( Z )殭屍程式
- x: COMMAND = Command name/line //程式啟動命令列引數
- y: WCHAN = Sleeping in Function //在睡眠中
- z: Flags = Task Flags <sched.h> //任務標誌
- Note1:
- If a selected sort field can't be shown due to screen width or your field order, the '<' and '>' keys
- will be unavailable until a field within viewable range is chosen.
- Note2:
- Field sorting uses internal values, not those in column display. Thus, the TTY & WCHAN fields will violate strict ASCII collating sequence. (shame on you if WCHAN is chosen)
- Current Fields: AEHIOQTWKNMbcdfgjplrsuvyzX for window 1:Def
- Toggle fields via field letter, type any other key to return
- * A: PID = Process Id
- * E: USER = User Name
- * H: PR = Priority
- * I: NI = Nice value
- * O: VIRT = Virtual Image (kb)
- * Q: RES = Resident size (kb)
- * T: SHR = Shared Mem size (kb)
- * W: S = Process Status
- * K: %CPU = CPU usage
- * N: %MEM = Memory usage (RES)
- * M: TIME+ = CPU Time, hundredths
- b: PPID = Parent Process Pid
- c: RUSER = Real user name
- d: UID = User Id
- f: GROUP = Group Name
- g: TTY = Controlling Tty
- j: #C = Last used cpu (SMP)
- p: SWAP = Swapped size (kb)
- l: TIME = CPU Time
- r: CODE = Code size (kb)
- s: DATA = Data+Stack size (kb)
- u: nFLT = Page Fault count
- v: nDRT = Dirty Pages count
- y: WCHAN = Sleeping in Function
- z: Flags = Task Flags <sched.h>
- * X: COMMAND = Command name/line
- Flags field:
- 0x00000001 PF_ALIGNWARN
- 0x00000002 PF_STARTING
- 0x00000004 PF_EXITING
- 0x00000040 PF_FORKNOEXEC
- 0x00000100 PF_SUPERPRIV
- 0x00000200 PF_DUMPCORE
- 0x00000400 PF_SIGNALED
- 0x00000800 PF_MEMALLOC
- 0x00002000 PF_FREE_PAGES (2.5)
- 0x00008000 debug flag (2.5)
- 0x00024000 special threads (2.5)
- 0x001D0000 special states (2.5)
-
0x00100000 PF_USEDFPU (thru 2.4)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31397003/viewspace-2150348/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux PS命令詳解Linux
- linux ps命令使用詳解Linux
- linux--ps命令詳細解說Linux
- Linux ps命令詳解,Linux檢視程序。Linux
- ps命令詳解
- Linux中awk命令詳解Linux
- Linux中DD命令詳解Linux
- Linux中tail命令的使用詳解!LinuxAI
- Linux檢視程序命令ps和top示例詳解Linux
- Linux at命令詳解Linux
- Linux中sort,uniq,cut,wc命令詳解Linux
- Linux中find命令-path -prune用法詳解Linux
- JPS 命令詳細解釋
- Linux下 netstat ps kill 命令詳解及常用命令收集Linux
- 【AIX-PS】AIX系統ps命令詳解AI
- Linux 中 RPM 命令引數使用詳解Linux
- Linux xargs 命令詳解Linux
- Linux sed 命令詳解Linux
- Linux awk 命令詳解Linux
- linux top 命令詳解Linux
- Linux diff命令詳解Linux
- Linux chattr命令詳解Linux
- Linux命令top詳解Linux
- Linux screen 命令詳解Linux
- Linux find 命令詳解Linux
- linux top命令詳解Linux
- linux命令詳解:sortLinux
- 【Linux】tcpdump命令詳解LinuxTCP
- linux tail 命令詳解LinuxAI
- Linux more命令詳解Linux
- linux grep命令詳解Linux
- Linux free命令詳解Linux
- Linux date命令詳解Linux
- Linux scp命令詳解Linux
- Linux df命令詳解Linux
- Linux du命令詳解Linux
- Linux ls命令詳解Linux
- Linux Crontab命令詳解Linux