1. 程式人生 > >10個常用的ps命令總結,參數

10個常用的ps命令總結,參數

大寫字母 服務器 stop opp 字段表 ssi 版本顯示 全部 後臺運行

Linux系統中10個常用的ps命令總結

PS 命令是什麽

查看它的man手冊可以看到,ps命令能夠給出當前系統中進程的快照。它能捕獲系統在某一事件的進程狀態。如果你想不斷更新查看的這個狀態,可以使用top命令。

ps命令支持三種使用的語法格式

  1. UNIX 風格,選項可以組合在一起,並且選項前必須有“-”連字符
    BSD 風格,選項可以組合在一起,但是選項前不能有“-”連字符
    GNU 風格的長選項,選項前有兩個“-”連字符

我們能夠混用這幾種風格,但是可能會發生沖突。本文使用 UNIX 風格的ps命令。這裏有在日常生活中使用較多的ps命令的例子。
1. 不加參數執行ps命令

這是一個基本的 ps 使用。在控制臺中執行這個命令並查看結果。
技術分享圖片

結果默認會顯示4列信息。

  1. PID: 運行著的命令(CMD)的進程編號
    TTY: 命令所運行的位置(終端)
    TIME: 運行著的該命令所占用的CPU處理時間
    CMD: 該進程所運行的命令

這些信息在顯示時未排序。


2. 顯示所有當前進程

使用 -a 參數。-a 代表 all。同時加上x參數會顯示沒有控制終端的進程。

$ ps -ax

這個命令的結果或許會很長。為了便於查看,可以結合less命令和管道來使用。

$ ps -ax | less
技術分享圖片

3. 根據用戶過濾進程

在需要查看特定用戶進程的情況下,我們可以使用 -u 參數。比如我們要查看用戶‘pungki‘的進程,可以通過下面的命令:

$ ps -u pungki
技術分享圖片

4. 通過cpu和內存使用來過濾進程

也許你希望把結果按照 CPU 或者內存用量來篩選,這樣你就找到哪個進程占用了你的資源。要做到這一點,我們可以使用 aux 參數,來顯示全面的信息:

$ ps -aux | less
技術分享圖片

當結果很長時,我們可以使用管道和less命令來篩選。

默認的結果集是未排好序的。可以通過 --sort命令來排序。

根據 CPU 使用來升序排序

$ ps -aux --sort -pcpu | less
技術分享圖片

根據 內存使用 來升序排序

$ ps -aux --sort -pmem | less
技術分享圖片

我們也可以將它們合並到一個命令,並通過管道顯示前10個結果:

$ ps -aux --sort -pcpu,+pmem | head -n 10

5. 通過進程名和PID過濾

使用 -C 參數,後面跟你要找的進程的名字。比如想顯示一個名為getty的進程的信息,就可以使用下面的命令:

$ ps -C getty
技術分享圖片

如果想要看到更多的細節,我們可以使用-f參數來查看格式化的信息列表:

$ ps -f -C getty
技術分享圖片

6. 根據線程來過濾進程

如果我們想知道特定進程的線程,可以使用-L 參數,後面加上特定的PID。

$ ps -L 1213
技術分享圖片

7. 樹形顯示進程

有時候我們希望以樹形結構顯示進程,可以使用 -axjf 參數。

$ps -axjf
技術分享圖片

或者可以使用另一個命令。

$ pstree
技術分享圖片

8. 顯示安全信息

如果想要查看現在有誰登入了你的服務器。可以使用ps命令加上相關參數:

$ ps -eo pid,user,args

參數 -e 顯示所有進程信息,-o 參數控制輸出。Pid,User 和 Args參數顯示PID,運行應用的用戶和該應用。
技術分享圖片

能夠與-e 參數 一起使用的關鍵字是args, cmd, comm, command, fname, ucmd, ucomm, lstart, bsdstart 和 start。


9. 格式化輸出root用戶(真實的或有效的UID)創建的進程

系統管理員想要查看由root用戶運行的進程和這個進程的其他相關信息時,可以通過下面的命令:

$ ps -U root -u root u

-U 參數按真實用戶ID(RUID)篩選進程,它會從用戶列表中選擇真實用戶名或 ID。真實用戶即實際創建該進程的用戶。

-u 參數用來篩選有效用戶ID(EUID)。

最後的u參數用來決定以針對用戶的格式輸出,由User, PID, %CPU, %MEM, VSZ, RSS, TTY, STAT, START, TIME 和 COMMAND這幾列組成。

這裏有上面的命令的輸出結果:
技術分享圖片

10. 使用PS實時監控進程狀態

ps 命令會顯示你系統當前的進程狀態,但是這個結果是靜態的。

當有一種情況,我們需要像上面第四點中提到的通過CPU和內存的使用率來篩選進程,並且我們希望結果能夠每秒刷新一次。為此,我們可以將ps命令和watch命令結合起來。

$ watch -n 1 ‘ps -aux --sort -pmem, -pcpu’
技術分享圖片

如果輸出太長,我們也可以限制它,比如前20條,我們可以使用head命令來做到。

$ watch -n 1 ‘ps -aux --sort -pmem, -pcpu | head 20’
技術分享圖片

這裏的動態查看並不像top或者htop命令一樣。但是使用ps的好處是你能夠定義顯示的字段,你能夠選擇你想查看的字段。

舉個例子,如果你只需要看名為‘pungki‘用戶的信息,你可以使用下面的命令:

$ watch -n 1 ‘ps -aux -U pungki u --sort -pmem, -pcpu | head 20’
技術分享圖片

結論

你也許每天都會使用ps命令來監控你的Linux系統。但是事實上,你可以通過ps命令的參數來生成各種你需要的報表。

ps命令的另一個優勢是ps是各種 Linux系統都默認安裝的,因此你只要用就行了。

不要忘了通過 man ps來查看更多的參數。(LCTT 譯註:由於 ps 命令古老而重要,所以它在不同的 UNIX、BSD、Linux 等系統中的參數不盡相同,因此如果你用的不是 Linux 系統,請查閱你的文檔了解具體可用的參數。)

PS 命令是什麽

查看它的man手冊可以看到,ps命令能夠給出當前系統中進程的快照。它能捕獲系統在某一事件的進程狀態。如果你想不斷更新查看的這個狀態,可以使用top命令。

ps命令支持三種使用的語法格式

  1. UNIX 風格,選項可以組合在一起,並且選項前必須有“-”連字符
    BSD 風格,選項可以組合在一起,但是選項前不能有“-”連字符
    GNU 風格的長選項,選項前有兩個“-”連字符

我們能夠混用這幾種風格,但是可能會發生沖突。本文使用 UNIX 風格的ps命令。這裏有在日常生活中使用較多的ps命令的例子。
1. 不加參數執行ps命令

這是一個基本的 ps 使用。在控制臺中執行這個命令並查看結果。
技術分享圖片

結果默認會顯示4列信息。

  1. PID: 運行著的命令(CMD)的進程編號
    TTY: 命令所運行的位置(終端)
    TIME: 運行著的該命令所占用的CPU處理時間
    CMD: 該進程所運行的命令

這些信息在顯示時未排序。


2. 顯示所有當前進程

使用 -a 參數。-a 代表 all。同時加上x參數會顯示沒有控制終端的進程。

$ ps -ax

這個命令的結果或許會很長。為了便於查看,可以結合less命令和管道來使用。

$ ps -ax | less
技術分享圖片

3. 根據用戶過濾進程

在需要查看特定用戶進程的情況下,我們可以使用 -u 參數。比如我們要查看用戶‘pungki‘的進程,可以通過下面的命令:

$ ps -u pungki
技術分享圖片

4. 通過cpu和內存使用來過濾進程

也許你希望把結果按照 CPU 或者內存用量來篩選,這樣你就找到哪個進程占用了你的資源。要做到這一點,我們可以使用 aux 參數,來顯示全面的信息:

$ ps -aux | less
技術分享圖片

當結果很長時,我們可以使用管道和less命令來篩選。

默認的結果集是未排好序的。可以通過 --sort命令來排序。

根據 CPU 使用來升序排序

$ ps -aux --sort -pcpu | less
技術分享圖片

根據 內存使用 來升序排序

$ ps -aux --sort -pmem | less
技術分享圖片

我們也可以將它們合並到一個命令,並通過管道顯示前10個結果:

$ ps -aux --sort -pcpu,+pmem | head -n 10

5. 通過進程名和PID過濾

使用 -C 參數,後面跟你要找的進程的名字。比如想顯示一個名為getty的進程的信息,就可以使用下面的命令:

$ ps -C getty
技術分享圖片

如果想要看到更多的細節,我們可以使用-f參數來查看格式化的信息列表:

$ ps -f -C getty
技術分享圖片

6. 根據線程來過濾進程

如果我們想知道特定進程的線程,可以使用-L 參數,後面加上特定的PID。

$ ps -L 1213
技術分享圖片

7. 樹形顯示進程

有時候我們希望以樹形結構顯示進程,可以使用 -axjf 參數。

$ps -axjf
技術分享圖片

或者可以使用另一個命令。

$ pstree
技術分享圖片

8. 顯示安全信息

如果想要查看現在有誰登入了你的服務器。可以使用ps命令加上相關參數:

$ ps -eo pid,user,args

參數 -e 顯示所有進程信息,-o 參數控制輸出。Pid,User 和 Args參數顯示PID,運行應用的用戶和該應用。
技術分享圖片

能夠與-e 參數 一起使用的關鍵字是args, cmd, comm, command, fname, ucmd, ucomm, lstart, bsdstart 和 start。


9. 格式化輸出root用戶(真實的或有效的UID)創建的進程

系統管理員想要查看由root用戶運行的進程和這個進程的其他相關信息時,可以通過下面的命令:

$ ps -U root -u root u

-U 參數按真實用戶ID(RUID)篩選進程,它會從用戶列表中選擇真實用戶名或 ID。真實用戶即實際創建該進程的用戶。

-u 參數用來篩選有效用戶ID(EUID)。

最後的u參數用來決定以針對用戶的格式輸出,由User, PID, %CPU, %MEM, VSZ, RSS, TTY, STAT, START, TIME 和 COMMAND這幾列組成。

這裏有上面的命令的輸出結果:
技術分享圖片

10. 使用PS實時監控進程狀態

ps 命令會顯示你系統當前的進程狀態,但是這個結果是靜態的。

當有一種情況,我們需要像上面第四點中提到的通過CPU和內存的使用率來篩選進程,並且我們希望結果能夠每秒刷新一次。為此,我們可以將ps命令和watch命令結合起來。

$ watch -n 1 ‘ps -aux --sort -pmem, -pcpu’
技術分享圖片

如果輸出太長,我們也可以限制它,比如前20條,我們可以使用head命令來做到。

$ watch -n 1 ‘ps -aux --sort -pmem, -pcpu | head 20’
技術分享圖片

這裏的動態查看並不像top或者htop命令一樣。但是使用ps的好處是你能夠定義顯示的字段,你能夠選擇你想查看的字段。

舉個例子,如果你只需要看名為‘pungki‘用戶的信息,你可以使用下面的命令:

$ watch -n 1 ‘ps -aux -U pungki u --sort -pmem, -pcpu | head 20’
技術分享圖片

結論

你也許每天都會使用ps命令來監控你的Linux系統。但是事實上,你可以通過ps命令的參數來生成各種你需要的報表。

ps命令的另一個優勢是ps是各種 Linux系統都默認安裝的,因此你只要用就行了。

不要忘了通過 man ps來查看更多的參數。(LCTT 譯註:由於 ps 命令古老而重要,所以它在不同的 UNIX、BSD、Linux 等系統中的參數不盡相同,因此如果你用的不是 Linux 系統,請查閱你的文檔了解具體可用的參數。)

每天一個linux命令:ps命令

Linux中的ps命令是Process Status的縮寫。ps命令用來列出系統中當前運行的那些進程。ps命令列出的是當前那些進程的快照,就是執行ps命令的那個時刻的那些進程,如果想要動態的顯示進程信息,就可以使用top命令。

要對進程進行監測和控制,首先必須要了解當前進程的情況,也就是需要查看當前進程,而 ps 命令就是最基本同時也是非常強大的進程查看命令。使用該命令可以確定有哪些進程正在運行和運行的狀態、進程是否結束、進程有沒有僵死、哪些進程占用了過多的資源等等。總之大部分信息都是可以通過執行該命令得到的。

ps 為我們提供了進程的一次性的查看,它所提供的查看結果並不動態連續的;如果想對進程時間監控,應該用 top 工具。

kill 命令用於殺死進程。

linux上進程有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

1.命令格式:

ps[參數]

2.命令功能:

用來顯示當前進程的狀態

3.命令參數:

a 顯示所有進程

-a 顯示同一終端下的所有程序

-A 顯示所有進程

c 顯示進程的真實名稱

-N 反向選擇

-e 等於“-A”

e 顯示環境變量

f 顯示程序間的關系

-H 顯示樹狀結構

r 顯示當前終端的進程

T 顯示當前終端的所有程序

u 指定用戶的所有進程

-au 顯示較詳細的資訊

-aux 顯示所有包含其他使用者的行程

-C<命令> 列出指定命令的狀況

--lines<行數> 每頁顯示的行數

--width<字符數> 每頁顯示的字符數

--help 顯示幫助信息

--version 顯示版本顯示

4.使用實例:

實例1:顯示所有進程信息

命令:

ps -A

輸出:

[root@localhost test6]# ps -A

PID TTY TIME CMD

1 ? 00:00:00 init

2 ? 00:00:01 migration/0

3 ? 00:00:00 ksoftirqd/0

4 ? 00:00:01 migration/1

5 ? 00:00:00 ksoftirqd/1

6 ? 00:29:57 events/0

7 ? 00:00:00 events/1

8 ? 00:00:00 khelper

49 ? 00:00:00 kthread

54 ? 00:00:00 kblockd/0

55 ? 00:00:00 kblockd/1

56 ? 00:00:00 kacpid

217 ? 00:00:00 cqueue/0

……省略部分結果

說明:

實例2:顯示指定用戶信息

命令:

ps -u root

輸出:

[root@localhost test6]# ps -u root

PID TTY TIME CMD

1 ? 00:00:00 init

2 ? 00:00:01 migration/0

3 ? 00:00:00 ksoftirqd/0

4 ? 00:00:01 migration/1

5 ? 00:00:00 ksoftirqd/1

6 ? 00:29:57 events/0

7 ? 00:00:00 events/1

8 ? 00:00:00 khelper

49 ? 00:00:00 kthread

54 ? 00:00:00 kblockd/0

55 ? 00:00:00 kblockd/1

56 ? 00:00:00 kacpid

……省略部分結果

說明:

實例3:顯示所有進程信息,連同命令行

命令:

ps -ef

輸出:

[root@localhost test6]# ps -ef

UID PID PPID C STIME TTY TIME CMD

root 1 0 0 Nov02 ? 00:00:00 init [3]

root 2 1 0 Nov02 ? 00:00:01 [migration/0]

root 3 1 0 Nov02 ? 00:00:00 [ksoftirqd/0]

root 4 1 0 Nov02 ? 00:00:01 [migration/1]

root 5 1 0 Nov02 ? 00:00:00 [ksoftirqd/1]

root 6 1 0 Nov02 ? 00:29:57 [events/0]

root 7 1 0 Nov02 ? 00:00:00 [events/1]

root 8 1 0 Nov02 ? 00:00:00 [khelper]

root 49 1 0 Nov02 ? 00:00:00 [kthread]

root 54 49 0 Nov02 ? 00:00:00 [kblockd/0]

root 55 49 0 Nov02 ? 00:00:00 [kblockd/1]

root 56 49 0 Nov02 ? 00:00:00 [kacpid]

……省略部分結果

說明:

實例4: ps 與grep 常用組合用法,查找特定進程

命令:

ps -ef|grep ssh

輸出:

[root@localhost test6]# ps -ef|grep ssh

root 2720 1 0 Nov02 ? 00:00:00 /usr/sbin/sshd

root 17394 2720 0 14:58 ? 00:00:00 sshd: root@pts/0

root 17465 17398 0 15:57 pts/0 00:00:00 grep ssh

說明:

實例5:將目前屬於您自己這次登入的 PID 與相關信息列示出來

命令:

ps -l

輸出:

[root@localhost test6]# ps -l

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD

4 S 0 17398 17394 0 75 0 - 16543 wait pts/0 00:00:00 bash

4 R 0 17469 17398 0 77 0 - 15877 - pts/0 00:00:00 ps

說明:

各相關信息的意義:

F 代表這個程序的旗標 (flag), 4 代表使用者為 super user

S 代表這個程序的狀態 (STAT),關於各 STAT 的意義將在內文介紹

UID 程序被該 UID 所擁有

PID 就是這個程序的 ID !

PPID 則是其上級父程序的ID

C CPU 使用的資源百分比

PRI 這個是 Priority (優先執行序) 的縮寫,詳細後面介紹

NI 這個是 Nice 值,在下一小節我們會持續介紹

ADDR 這個是 kernel function,指出該程序在內存的那個部分。如果是個 running的程序,一般就是 "-"

SZ 使用掉的內存大小

WCHAN 目前這個程序是否正在運作當中,若為 - 表示正在運作

TTY 登入者的終端機位置

TIME 使用掉的 CPU 時間。

CMD 所下達的指令為何

在預設的情況下, ps 僅會列出與目前所在的 bash shell 有關的 PID 而已,所以, 當我使用 ps -l 的時候,只有三個 PID。

實例6:列出目前所有的正在內存當中的程序

命令:

ps aux

輸出:

[root@localhost test6]# ps aux

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.0 0.0 10368 676 ? Ss Nov02 0:00 init [3]

root 2 0.0 0.0 0 0 ? S< Nov02 0:01 [migration/0]

root 3 0.0 0.0 0 0 ? SN Nov02 0:00 [ksoftirqd/0]

root 4 0.0 0.0 0 0 ? S< Nov02 0:01 [migration/1]

root 5 0.0 0.0 0 0 ? SN Nov02 0:00 [ksoftirqd/1]

root 6 0.0 0.0 0 0 ? S< Nov02 29:57 [events/0]

root 7 0.0 0.0 0 0 ? S< Nov02 0:00 [events/1]

root 8 0.0 0.0 0 0 ? S< Nov02 0:00 [khelper]

root 49 0.0 0.0 0 0 ? S< Nov02 0:00 [kthread]

root 54 0.0 0.0 0 0 ? S< Nov02 0:00 [kblockd/0]

root 55 0.0 0.0 0 0 ? S< Nov02 0:00 [kblockd/1]

root 56 0.0 0.0 0 0 ? S< Nov02 0:00 [kacpid]

……省略部分結果

說明:

USER:該 process 屬於那個使用者賬號的

PID :該 process 的號碼

%CPU:該 process 使用掉的 CPU 資源百分比

%MEM:該 process 所占用的物理內存百分比

VSZ :該 process 使用掉的虛擬內存量 (Kbytes)

RSS :該 process 占用的固定的內存量 (Kbytes)

TTY :該 process 是在那個終端機上面運作,若與終端機無關,則顯示 ?,另外, tty1-tty6 是本機上面的登入者程序,若為 pts/0 等等的,則表示為由網絡連接進主機的程序。

STAT:該程序目前的狀態,主要的狀態有

R :該程序目前正在運作,或者是可被運作

S :該程序目前正在睡眠當中 (可說是 idle 狀態),但可被某些訊號 (signal) 喚醒。

T :該程序目前正在偵測或者是停止了

Z :該程序應該已經終止,但是其父程序卻無法正常的終止他,造成 zombie (疆屍) 程序的狀態

START:該 process 被觸發啟動的時間

TIME :該 process 實際使用 CPU 運作的時間

COMMAND:該程序的實際指令

實例7:列出類似程序樹的程序顯示

命令:

ps -axjf

輸出:

[root@localhost test6]# ps -axjf

Warning: bad syntax, perhaps a bogus ‘-‘? See /usr/share/doc/procps-3.2.7/FAQ

PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND

0 1 1 1 ? -1 Ss 0 0:00 init [3]

1 2 1 1 ? -1 S< 0 0:01 [migration/0]

1 3 1 1 ? -1 SN 0 0:00 [ksoftirqd/0]

1 4 1 1 ? -1 S< 0 0:01 [migration/1]

1 5 1 1 ? -1 SN 0 0:00 [ksoftirqd/1]

1 6 1 1 ? -1 S< 0 29:58 [events/0]

1 7 1 1 ? -1 S< 0 0:00 [events/1]

1 8 1 1 ? -1 S< 0 0:00 [khelper]

1 49 1 1 ? -1 S< 0 0:00 [kthread]

49 54 1 1 ? -1 S< 0 0:00 \_ [kblockd/0]

49 55 1 1 ? -1 S< 0 0:00 \_ [kblockd/1]

49 56 1 1 ? -1 S< 0 0:00 \_ [kacpid]

說明:

實例8:找出與 cron 與 syslog 這兩個服務有關的 PID 號碼

命令:

輸出:

[root@localhost test6]# ps aux | egrep ‘(cron|syslog)‘

root 2682 0.0 0.0 83384 2000 ? Sl Nov02 0:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5

root 2735 0.0 0.0 74812 1140 ? Ss Nov02 0:00 crond

root 17475 0.0 0.0 61180 832 pts/0 S+ 16:27 0:00 egrep (cron|syslog)

[root@localhost test6]#

說明:

其他實例:

1. 可以用 | 管道和 more 連接起來分頁查看

命令:

ps -aux |more

2. 把所有進程顯示出來,並輸出到ps001.txt文件

命令:

ps -aux > ps001.txt

3. 輸出指定的字段

命令:

ps -o pid,ppid,pgrp,session,tpgid,comm

輸出:

[root@localhost test6]# ps -o pid,ppid,pgrp,session,tpgid,comm

PID PPID PGRP SESS TPGID COMMAND

17398 17394 17398 17398 17478 bash

17478 17398 17478 17398 17478 ps

[root@localhost test6]#


利用ps命令向管理員報告執行中的程序:

有時候系統管理員可能只關心現在系統中運行著哪些程序,而不想知道有哪些進程在運行。由於一個應用程序可能需要啟動多個進程。所在在同等情況下,進程的數 量要比程序多的多。為此從閱讀方面考慮,管理員需要知道系統中運行的具體程序。要實現這個需求的話,就需要利用命令ps來幫忙。

一、ps命令顯示結果的含義。

當需要查看系統中執行的程序時,雖然ps 命令不是唯一的命令,但絕對是使用的最頻繁的命令。如下圖所示,就是執行ps命令後顯示的結果。

在命令行中輸入命令ps,就可以顯示系統中當前運行的所有應用程序。如上圖所示,如果輸入ps命令,其顯示結果主要有四部分內容。首先是PID,這是程序 的ID號。才作系統就是利用這個ID號來唯一的標識應用程序,而不是利用命令來辨認。當需要強制關閉應用程序時,就需要用到這個PID號碼。其次是 TTY,這個字段表示用戶使用的終端代碼。Pts表示用戶是采用遠程登錄的。第三個參數TIME表示這個程序所消耗的CPU時間,註意這個時間不是程序開 始運行的時間。最後一個參數CMD就表示程序的名字。

二、讓系統報告詳細的信息。

在使用ps命令時,如果不采用任何的可選項,則其顯示的信息是非常有限的,而且往往只顯示當前用戶所運行的程序。當系統管理員需要知道應用程序更加詳細的 運行信息時,如想要知道這個應用程序內存、CPU的占用率情況時,那麽就需要加入一些可選項。如系統管理員需要一並查看其它用戶所執行的應用程序時,就需 要在這個命令後面采用可選項-al。如此的話,系統會列出系統中所有用戶運行的所有程序。如想要知道某個程序CPU與內存的使用情況,而不是只簡單的現實 其CPU的使用時間,那麽就需要在這個命令後面加入參數-l ,即使用ps –l命令可以讓系統顯示出應用程序的詳細運行信息。關於上面各個字段所代表的含義,大家若有興趣的話可以查看相關的幫助。一般來說,系統管理員關心的只是 程序的PID號碼、內存與CPU的使用率、命令的名字、用戶采用的終端等等。其它的信息對於系統管理員來說價值不是很大。

三、查看後臺運行的程序。

默認情況下,ps命令只顯示前臺運行的程序,而不會顯示後臺運行的程序。但是並非所有的程序都是在前臺運行。正常情況下,隱藏在後臺運行的程序數量要比前 臺運行的程序多的多。如隨著操作系統啟動而啟動的不少系統自帶程序,其運行的方式都是後臺運行。而且有時候,系統出現問題往往是由於後臺程序所造成的。如 常見的木馬等程序都是在後臺所運行的。為此系統管理員相對來說,更加想要知道在後臺運行著哪些程序。

如果要查看後臺運行的程序,那就比較復雜一點。因為在不同版本的Linux操作系統中,要顯示後臺進程其所采用的可選項是不同的。如在紅帽子 Linux操作系統中,其實采用參數的形式而不是可選項。即采用ps aux命令可以顯示出所有的應用程序(包括前臺與後臺的)。參數與可選項的差異主要在前面又沒有這個-符號。如果帶有這個符號的就表示這是一個可選項。而 如果不帶的,就表示這事一個參數。這個符號一般情況下可不能夠省。在該寫的地方沒寫,或者不需要些的地方偏偏加上了,則系統都會提示錯誤信息,說找不到這 個命令。而在其它的Linux系統版本中,可能不能夠識別這個aux參數。如在一些Linux操作系統版本中,需要采用-a可選項來完成這個任務。由於系 統版本之間的差異,給系統管理員帶來了不少的麻煩。不過值得慶幸的是,各個操作系統版本中都有在線的幫助。如果系統管理員在使用一個新版本的操作系統時, 不知道要顯示全部進程該使用哪個可選項時,可以利用ps --heip等命令來查看系統幫助。不過美中不足的是,系統在線幫助都是英文的,對系統管理員的英文水平是一個不小的考驗。不過如果要作Linux系統管 理員,這點英文底子還是要有的。因為最新的Linux技術基本上都是先出來英文文檔的。其實要掌握最先進的操作系統書籍,大部分的計算機書籍都是英文的。

四、對程序列表進行排序。

當運行的應用程序比較多時,系統管理員需要對應用程序進行排序。Ps命令的排序功能是比較強的。主要是因為這個命令有一個--sort參數(註意在這個參 數前面采用的是兩個小橫桿符號,各位讀者不要以為是筆者寫錯了)。在這個參數後面加上系統管理員想要的排序字段,就可以進行排序了。如這個命令ps –A --sort cmd,就表示顯示系統所有的應用程序,並根據程序命令來進行排序。在Linux操作系統參數中,還有一個比較麻煩的事情,就是參數大小寫不同往往代表著 不同的含義。如上面這個命令,將大寫字母A換成是小寫字符a,則結果就完全兩樣了。大寫字符A表示所有的應用程序,而小寫字符a則表示“all w/ tty except session leaders”。兩者有本質的區別。通過這個差異可以用來過濾不同終端登陸帳戶所運行的應用程序。

在ps命令中,不少參數都有這種情況。運行ps --help查看這個命令的所有參數,就可以看到類似的大小寫不同代表不同含義的情況還有很多。如大寫字符O與小寫字符o、大寫字符U與小寫字符u等等。 這些差異無形之中增加了系統管理員維護操作系統的難度。系統管理員要掌握這麽多的參數以及參數大小寫之間的差異,往往是不可能的。系統管理員除了平時要多 使用使用常用的參數來增加值觀的印象,這個系統命令的在線幫助確實也是少不了的。這個系統幫助可以給管理員使用系統命令提供在線的指導。

五、報告特定程序的運行情況。

當系統中運行的程序比較多時,通過對程序名字排序可以幫助管理員找到自己所關心的程序。但是這仍然不是最簡便的方式。如現在系統管理員在其它操作系統中發 現有一個叫做threadx的木馬程序在系統後臺運行。為此管理員需要在其它電腦上查看是否也有這個木馬程序在運行。此時該如何處理呢?利用排序功能,對 程序的名字進行排序(註意不是對程序的PID進行排序,因為即使程序相同,啟動的時間不同或者操作系統中已經啟動程序的數量不同,這個PID號碼也就不 同。也就是說這個PID號碼是自動生成的)。這在一定程度上可以幫助管理員加快程序查找的速度。不過筆者認為,如果系統管理員能夠使用管道符與 grep等查詢命令可能會更快的找到自己所需要的應用程序信息。

如現在系統管理員若使用這個命令ps aux |grep “threadx”,會出現什麽情況呢?首先系統會列出當前系統中所有運行的應用程序(包括前臺運行與後臺運行的)。然後將輸出的結果通過管道符號|傳遞 給命令grep。然後命令grep就會在ps命令輸出的結果中查找是否有threadx這個程序運行的信息。如果有的話,則會在窗口中顯示這個程序的信 息,而過濾掉其它應用程序的運行信息。可見采用管道符跟其它查詢命令結合,可以幫助系統管理員在最短的時間內找到自己想了解的應用程序的信息。

跟一些特殊符號結合還可以實現一些更加負責的功能。如跟cat命令結合使用可以統計出符合條件的程序數量。如在命令後面加入>符號,可以將輸出的結 果定位到一個文件中。如跟通配符結合使用,可以查詢出滿足特定條件的一類程序。如還可以查詢出某個程序父程序或者其子程序的運行信息等等。

10個常用的ps命令總結,參數