這篇文章主要介紹Linux中如何使用ps命令,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
成都創(chuàng)新互聯(lián)主要從事成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)龍安,十余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792(cpu)使用量,觀察進(jìn)程信息:
ps auxw|sort -k3 -rn|head -20
linux上進(jìn)程有5種狀態(tài):
運(yùn)行(正在運(yùn)行或在運(yùn)行隊(duì)列中等待)
中斷(休眠中, 受阻, 在等待某個(gè)條件的形成或接受到信號(hào))
不可中斷(收到信號(hào)不喚醒和不可運(yùn)行, 進(jìn)程必須等待直到有中斷發(fā)生)
僵死(進(jìn)程已終止, 但進(jìn)程描述符存在, 直到父進(jìn)程調(diào)用wait4()系統(tǒng)調(diào)用后釋放)
停止(進(jìn)程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號(hào)后停止運(yùn)行)
ps工具標(biāo)識(shí)進(jìn)程的5種狀態(tài)碼:
D 不可中斷 uninterruptible sleep (usually IO)
R 運(yùn)行 runnable (on run queue)
S 中斷 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”) process
名稱:ps
使用權(quán)限:所有使用者
使用方式:ps [options] [--help]
說明:顯示瞬間行程 (process) 的動(dòng)態(tài)
參數(shù):
ps 的參數(shù)非常多, 在此僅列出幾個(gè)常用的參數(shù)并大略介紹含義
-A 列出所有的行程
-w 顯示加寬可以顯示較多的資訊
-au 顯示較詳細(xì)的資訊
-aux 顯示所有包含其他使用者的行程
au(x) 輸出格式 :
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 進(jìn)程擁有者
PID: pid
%CPU: 占用的 CPU 使用率
%MEM: 占用的記憶體使用率
VSZ: 占用的虛擬記憶體大小
RSS: 占用的記憶體大小
TTY: 終端的次要裝置號(hào)碼 (minor device number of tty)
STAT: 該行程的狀態(tài):
D: 不可中斷的靜止
R: 正在執(zhí)行中
S: 靜止?fàn)顟B(tài)
T: 暫停執(zhí)行
Z: 不存在但暫時(shí)無法消除
W: 沒有足夠的記憶體分頁可分配
<: 高優(yōu)先序的行程
N: 低優(yōu)先序的行程
L: 有記憶體分頁分配并鎖在記憶體內(nèi) (即時(shí)系統(tǒng)或捱A I/O)
START: 行程開始時(shí)間
TIME: 執(zhí)行的時(shí)間
COMMAND:所執(zhí)行的指令
范例:
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 顯示現(xiàn)行終端機(jī)下的所有程序,包括其他用戶的程序。
ps -A 顯示所有程序。
ps c 列出程序時(shí),顯示每個(gè)程序真正的指令名稱,而不包含路徑,參數(shù)或常駐服務(wù)的標(biāo)示。
ps -e 此參數(shù)的效果和指定"A"參數(shù)相同。 例如: ps -e|grep sshd
ps e 列出程序時(shí),顯示每個(gè)程序所使用的環(huán)境變量。
ps f 用ASCII字符顯示樹狀結(jié)構(gòu),表達(dá)程序間的相互關(guān)系。
ps -H 顯示樹狀結(jié)構(gòu),表示程序間的相互關(guān)系。
ps -N 顯示所有的程序,除了執(zhí)行ps指令終端機(jī)下的程序之外。
ps s 采用程序信號(hào)的格式顯示程序狀況。
ps S 列出程序時(shí),包括已中斷的子程序資料。
ps -t<終端機(jī)編號(hào)>
指定終端機(jī)編號(hào),并列出屬于該終端機(jī)的程序的狀況。
ps u
以用戶為主的格式來顯示程序狀況。
ps x
顯示所有程序,不以終端機(jī)來區(qū)分。
最常用的方法是ps -aux,然后再利用一個(gè)管道符號(hào)導(dǎo)向到grep去查找特定的進(jìn)程,然后再對(duì)特定的進(jìn)程進(jìn)行操作。
附:Linux中top與ps區(qū)別
一:ps命令
以下是 ps 的最簡(jiǎn)單形式:
$ 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 是進(jìn)程的標(biāo)識(shí)號(hào)。
? TTY 是進(jìn)程所屬的終端控制臺(tái)。
? TIME 列是進(jìn)程所使用的總的 CPU 時(shí)間。
? CMD 列列出正在執(zhí)行的命令行。
使用帶有 -ef 選項(xiàng)的 ps,返回系統(tǒng)中所有用戶的所有進(jìn)程的完整列表。一般將此 ps 命令的結(jié)果傳送到 grep 中,則該結(jié)果更易于查看。例如:
$ 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 : 在命令執(zhí)行后顯示環(huán)境
-f : 完整顯示輸出
? 標(biāo)為 C 的列是由 CPU 用于計(jì)算執(zhí)行優(yōu)先級(jí)的因子。
? STIME 是指進(jìn)程的啟動(dòng)時(shí)間。
? 問號(hào)表示這些進(jìn)程不屬于任何 TTY,因?yàn)樗鼈兪怯上到y(tǒng)啟動(dòng)的。
主要參數(shù)說明:
1) 進(jìn)程用戶ID(UID),
雖然 uid 通常是指數(shù)字型的標(biāo)識(shí),但在第一列下指定的是用戶名,標(biāo)記為 UID
2) 進(jìn)程ID (PID)
3) 父進(jìn)程ID (PPID)
PPID 是父進(jìn)程的標(biāo)識(shí)號(hào)。對(duì)于 Oracle 進(jìn)程,這里的標(biāo)識(shí)號(hào)為 1 — 它是 init 進(jìn)程(所有進(jìn)程的父進(jìn)程)的 id,因?yàn)樵诒鞠到y(tǒng)中安 裝的 Oracle 是作為登錄進(jìn)程的一部分而啟動(dòng)的
4) CPU 調(diào)度情況 (C)
即是是由 CPU 用于計(jì)算執(zhí)行優(yōu)先級(jí)的因子。
5) 進(jìn)程啟動(dòng)的時(shí)間 (STIME)
6) 進(jìn)程共占用CPU的時(shí)間(TIME)
7) 啟動(dòng)進(jìn)程的命令 (CMD)
8)問號(hào)表示這些進(jìn)程不屬于任何 TTY,因?yàn)樗鼈兪怯上到y(tǒng)啟動(dòng)的。
使用PS命令分析系統(tǒng)性能的方法主要有:
1. 首先,根據(jù)用戶ID尋找由同一用戶執(zhí)行的許多相似任務(wù),這些任務(wù)很可能是因?yàn)橛脩暨\(yùn)行的某個(gè)腳本程序在后臺(tái)啟動(dòng)多個(gè)進(jìn)程而造成的。
2. 接下來,檢查TIME域中各進(jìn)程累計(jì)占用CPU的時(shí)間,如果有某個(gè)進(jìn)程累計(jì)占用了大量的CPU時(shí)間,通常說明該進(jìn)程可能陷入了無限循環(huán),或該京城的某寫邏輯出了錯(cuò)
3. 找到那些已陷入死鎖的進(jìn)程ID后,就可以使用kill命令強(qiáng)制終止該進(jìn)程了。
二:top命令
Ps 只為您提供當(dāng)前進(jìn)程的快照。要即時(shí)查看最活躍的進(jìn)程,可使用 top。
Top 實(shí)時(shí)地提供進(jìn)程信息。它還擁有交互式的狀態(tài),允許用戶輸入命令,如 n 后面跟有 5 或 10 等數(shù)字。其結(jié)果是指示 top 顯示 5 或 10 個(gè)最活躍的進(jìn)程。 Top 持續(xù)運(yùn)行,直到您按 "q" 退出 top 為止。
Top中的幾個(gè)隱含參數(shù): top -help
top中按1鍵和F鍵的參數(shù):
按1鍵可以等到多個(gè)cpu的情況
按F(f:當(dāng)前狀態(tài),可以按相應(yīng)的字母鍵做top的定制輸出)后得參數(shù):
對(duì)F鍵和f鍵的區(qū)別:
如果進(jìn)入F鍵區(qū)可以做進(jìn)程顯示的排序,如果進(jìn)入f鍵區(qū)的話則可以選擇顯示的多個(gè)項(xiàng)目:
* A: PID = Process Id //進(jìn)程ID
b: PPID = Parent Process Pid //父進(jìn)程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 //優(yōu)先權(quán)
i: NI = Nice value //優(yōu)先級(jí)得值(負(fù)數(shù)代表較高的優(yōu)先級(jí),正數(shù)是較低的優(yōu)先級(jí).0標(biāo)志改優(yōu)先級(jí)的值是不會(huì)被調(diào)整的)
j: #C = Last used cpu (SMP) //隨后使用的cpu比率
k: %CPU = CPU usage //cpu使用比率
l: TIME = CPU Time //cpu占用時(shí)間
m: TIME+ = CPU Time, hundredths //cpu%比
n: %MEM = Memory usage (RES) //內(nèi)存使用率
o: VIRT = Virtual Image (kb) //虛擬鏡像(VIRT = SWAP + RES:所有進(jìn)程使用的虛擬內(nèi)存值,包括所有的代碼,數(shù)據(jù),共享庫已經(jīng)被swapped out的)
p: SWAP = Swapped size (kb) //交換空間大小(所有虛擬內(nèi)存中的鏡像)
q: RES = Resident size (kb) //已經(jīng)使用了的常駐內(nèi)存(Resident size):RES = CODE + DATA
r: CODE = Code size (kb) //分配給執(zhí)行代碼的物理內(nèi)存
s: DATA = Data+Stack size (kb) //data+stack:物理內(nèi)存中非存放代碼的空間,用于存放數(shù)據(jù)
t: SHR = Shared Mem size (kb) //共享內(nèi)存大小.放映了一個(gè)task的潛在可以供別人使用的內(nèi)存的大小
u: nFLT = Page Fault count //內(nèi)存頁錯(cuò)誤的數(shù)量
v: nDRT = Dirty Pages count //臟頁的數(shù)量
w: S = Process Status //進(jìn)程狀態(tài):( R )為運(yùn)行或可執(zhí)行的,( S )為該程序正在睡眠中,( T )正在偵測(cè)或者是停止了,( Z )僵尸程序
x: COMMAND = Command name/line //進(jìn)程啟動(dòng)命令行參數(shù)
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)
以上是“Linux中如何使用ps命令”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道!