linux是很多計算機學習者喜歡的,下面小編為大家整理了關於linux檢視程序ps top區別的文章,希望能為你提供幫助:
一: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中按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 //任務標誌
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
* 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)