ps (Unix)
在大多數類Unix作業系統中,ps
程式(「process status」的簡稱)可以顯示當前執行的行程。一個相關的Unix工具top則可以檢視執行行程的即時資訊。
在Windows PowerShell中,ps
是Get-Process
cmdlet的預定義命令別名,它和Unix中的ps
本質上是相同的。
範例
輸出範例:
# ps
PID TTY TIME CMD
7431 pts/0 00:00:00 su
7434 pts/0 00:00:00 bash
18585 pts/0 00:00:00 ps
用戶還可以利用ps命令和grep
結合(參見pgrep和pkill命令)來尋找一個行程的資訊,例如它的行程ID:
$ # 查找`firefox-bin`的PID为2701
$ ps -A | grep firefox-bin
2701 ? 22:16:04 firefox-bin
或直接使用pgrep:
$ pgrep -l firefox-bin
2701 firefox-bin
檢視以root用戶執行的行程:
# ps -U root -u
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
root 1 0.0 0.0 9436 128 - ILs Sun00AM 0:00.12 /sbin/init --
分解
列名 | 內容 |
---|---|
%CPU | 行程正在使用多少個CPU |
%MEM | 行程正在使用多少主記憶體 |
ADDR | 行程的主記憶體地址 |
C或CP | CPU使用率和排程資訊 |
COMMAND* | 行程名,包括參數(如果有的話) |
NI | nice值 |
F | 標誌 |
PID | 行程ID |
PPID | 父行程ID |
PRI | 行程優先級 |
RSS | 真實主記憶體用量 |
S or STAT | 行程狀態碼 |
START or STIME | 行程啟動時間 |
SZ | 虛擬記憶體用量 |
TIME | 總CPU用量 |
TT或TTY | 與行程相關的終端 |
UID或USER | 行程所有者的用戶名 |
WCHAN | 行程所等待事件的主記憶體地址 |
* = 通常被简写
選項
ps有很多選項。在支援SUS和POSIX標準的作業系統上,ps常以選項-ef執行,其中「-e」選擇每一個(every)行程,「-f」指定「完整」(full)輸出格式。這些系統上的另一個常見選項是-l,它指定「長」(long)輸出格式。
由於歷史原因,大多數源自BSD的系統無法接受SUS和POSIX的標準選項(例如,「e」或「-e」選項將顯示環境變數)。在這樣的系統中,ps常使用輔助非標準選項aux,其中「a」列出了一個終端上的所有行程,包括其他用戶執行的,「x」列出所有沒有控制終端的行程,「u」添加了一列顯示每個行程的控制用戶。需要注意的是,為了最大的相容性,使用此語法時「aux」前沒有「-」。此外,在aux之後添加「ww」可以顯示行程的完整資訊,包括所有的參數,例如「ps auxww」。
參見
外部連結
- 單一UNIX®規範第7期,由國際開放標準組織發佈 – 命令與工具(Commands & Utilities)參考,
- Show all running processes in Linux using ps command(頁面存檔備份,存於互聯網檔案館)
- 單一UNIX®規範第7期,由國際開放標準組織發佈 : report a snapshot of the current processes – 參考,
- In Unix, what do the output fields of the ps command mean?(頁面存檔備份,存於互聯網檔案館)