Linux 中關于 ps 命令的一些常用例子
ps 命令是什么?
Linux 中的 ps 命令可以顯示系統中正在運行的進程信息,比如進程ID等。它是一個應用很廣泛的工具,有大約80多個選項,足見它的復雜性。本文將介紹一些關于 ps 命令最常用的例子。
ps命令在Linux中的基本用法
不帶任何選項的 ps 命令,顯示當前 shell 中正在運行的進程:
下面是輸出,我在后臺發送了 gedit 命令,所以它顯示了三個進程,否則你通常只會看到 ps 和 bash。?
在這里:
- PID 是進程的唯一 進程ID;
- TTY 是用戶登錄的終端類型。pts表示偽終端;
- TIME 顯示進程已運行的時間;
- CMD 是用以啟動進程的命令。
當然,這個例子不能提供任何真正有用的信息,下面我們來看一些 ps 命令的更實用的例子。
1. 查看所有正在運行的進程
如果要查看自己運行的所有進程,可以使用選項 x:
x 選項將顯示所有進程,即使它們不與當前 tty(終端類型)關聯,或者它們沒有控制終端(如守護進程)。
選項前面的中劃線 - 是可選的,但一般在 Linux 中約定使用它,所以最好帶上中劃線 - 。
以下是其中一部分輸出(我省略了一些,因為它總共有數百行):?
上述輸出中的 STAT 表示進程狀態碼(Process State Code),你可以在 ps 的 man 手冊中查看其詳細信息。
不過我們很少會看到 ps 只使用 -x 選項,通常會與選項 -u 一起使用:
使用選項 -u,可以看到每個進程的詳細信息:?
?上面輸出中,可以看到每個進程的用戶名、CPU消耗和內存使用情況等。RSS顯示進程當前在 RAM 中有多少內存,而 VSZ 則顯示進程總共有多少虛擬內存。
2. 使用 ps aux 命令查看所有正在運行的進程
你可能在 Linux 教程或文檔中經常看到 px -aux 或者 px aux 這樣的例子。
通過使用 -a 選項,可以看到 Linux 系統中所有用戶正在運行的進程。
其輸出與 ps -ux 相同,但也包含了其他用戶的進程,-u 選項可以讓你看到進程所屬用戶。
3. 使用 ps -ef 查看正在運行的進程
除了 ps -aux 之外,還可以使用 -e 選項列出所有正在運行的進程,然后在結合 -f 選項,以獲得運行進程的完整列表:
這里請注意 e 前面的中劃線 - 很重要,如果沒有的話,會顯示不同的結果。
此外還可以組合 H 選項,在線程視圖中查看所有進程,其中子進程位于其父進程下:
4. 查看特定用戶的進程
要查看某個用戶正在運行的進程,可以使用 -U 選項后跟用戶名:
比如,查看 root 用戶運行的進程:?
5. 查看由組運行的所有進程
可以通過提供組名或組id,按組而不是用戶對正在運行的進程進行分類:
還可以組合使用 f 選項以獲得完整的列表,大家可以自己試試看看輸出結果。
6. 獲取程序的所有事件和 PID
ps 命令的一個基本用途是獲取正在運行的程序的進程ID(PID)。比如當你要結束某個程序時,會搜索所有的程序事件,獲取它們的PID,然后使用 kill 命令結束該進程。
比如,我要查詢 apt 包管理器所運行的實例:
另外,也可以使用 ??grep ???來獲取類似的結果:
7. 獲取相關 PID 的進程信息
如果你有一個 PID,但是不知道它是屬于哪個進程,可以使用 ps 命令來查詢進程信息:
可以使用逗號來分割多個PID,進而查詢多個進程信息:
正如本文開始所說的,ps 是一個復雜且應用廣泛的命令,本文所介紹的只是一些最常用的例子。關于其詳細信息,大家可以查看 man 手冊。