大家好,我是 god23bin。歡迎來到《一分鐘學一個 Linux 命令》系列,每天只需一分鐘,記住一個 Linux 命令不成問題。今天要說的是 ps 命令。 ...
前言
大家好,我是 god23bin。歡迎來到《一分鐘學一個 Linux 命令》系列,每天只需一分鐘,記住一個 Linux 命令不成問題。今天要說的是 ps
命令。
什麼是 ps 命令?
ps
的英文全稱是 process status
,意思是進程狀態。
ps
命令是一個常用的 Linux 命令,用於查看當前系統中運行的進程信息。它提供了關於進程的各種詳細信息,如進程 ID(PID)、進程狀態、CPU 使用情況、記憶體占用、運行時間等。
如何使用 ps 命令?
ps
命令的基本語法如下:
ps [選項參數]
可以通過添加不同的選項來獲取不同類型的進程信息。
直接輸入 ps
,顯示當前進程:
ps
輸出結果包含 4 列信息:PID、TTY、TIME、CMD
- PID:(Process ID)唯一的進程 ID
- TTY:(Teletypewriter)它指的是終端類型或終端設備,用於用戶與電腦進行交互的輸入輸出設備,例如終端視窗或控制台。
- TIME:進程運行過程中占用 CPU 的總時間(以分鐘和秒為單位),簡單理解就是 CPU 運行這個進程消耗的時間。
- CMD:啟動進程的命令的名稱
有時候當我們執行 ps
命令時,TIME 顯示為 00:00:00
。這意味著該進程尚未使用 CPU ,所以沒有 CPU 執行的總時間。
對於上面的 bash
,就是這種情況,因為 bash
只是其他需要藉助 bash
運行的進程的父進程,所以它本身並沒有使用 CPU,也就沒有 CPU 執行時間了。
上面的輸出實際上不是很有用,因為它包含的信息不多。一般我們都是加上參數的。
舉例說明
以下是一些常用的 ps
命令示例:
- 顯示所有正在運行的進程:
ps -e
該命令等價於 ps -A
,這裡的 e
和 A
分別是 every
和 all
的意思,所以等價。
- 顯示與終端無關的所有進程:
我們打開一個新的終端,在新的終端中輸入 man ps
,接著我們回到原來的終端,輸入以下命令:
ps -a
輸出顯示:
PID TTY TIME CMD
23290 pts/1 00:00:00 man
23301 pts/1 00:00:00 less
23324 pts/0 00:00:00 ps
註意:
pst/1
表示一個偽終端(pseudo-terminal),同理pst/0
也是,0 和 1 只是終端的索引,當開啟多個視窗時,將遞增下去。
現在我們就可以在終端 0 看到終端 1 的進程了(man 命令和 less 命令的進程)
常用選項參數
以下是一些常用的 ps
命令選項參數:
-e
:(every)顯示所有進程,而不僅僅是當前用戶的進程-u
:(user)顯示面向用戶的進程的詳細信息,如進程所有者、CPU 使用率、記憶體使用率等-f
:(full-format)以全格式的列表顯示進程的信息,包括進程之間的層級關係-p
:(pid)查找具有指定進程 ID 的進程-C
:(Command)查找具有指定命令名稱的進程-aux
:以詳細格式顯示所有正在運行的進程,其中x
指的是在沒有控制終端的情況下列出進程,這些顯示的主要是啟動並運行在後臺的進程
例子
- 顯示所有進程信息:
ps -e
這將顯示所有進程的信息,無論是當前用戶的還是其他用戶的。
- 顯示進程的詳細信息:
ps -u
該命令將顯示進程的詳細信息,包括進程所有者、CPU 使用率、記憶體使用率等。
可以看到輸出更多列了,每列的意思是這樣的:
- USER:進程所有者的用戶名
- PID:進程的唯一標識符,即進程 ID
- %CPU:進程使用的 CPU 資源的百分比
- %MEM:進程使用的記憶體資源的百分比
- VSZ:(Virtual Memory Size)進程的虛擬記憶體大小(以 KB 為單位)
- RSS:(Resident Set Size)進程占用的物理記憶體大小(以 KB 為單位)
- TTY:進程所關聯的終端
- STAT:進程的狀態(例如,R 表示運行,S 表示睡眠,Z 表示僵屍(Zombie)等)
- START:進程啟動的時間
- TIME:進程運行過程中占用 CPU 的總時間
- COMMAND:啟動進程的命令名稱
- 顯示進程之間的層級關係:
ps -f
- UID:進程所有者的用戶 ID
- PID:進程的唯一 ID
- PPID:(Parent Process ID)父進程的標識符
- C:與
%CPU
的意思相同,進程使用的 CPU 資源的百分比,或者說進程的 CPU 使用率 - STIME:與
START
的意思相同,進程啟動的時間 - TTY:與進程相關聯的終端
- TIME:進程運行過程中占用 CPU 的總時間
- CMD:啟動進程的命令名稱
我們可以通過 -ef
來查看更多的進程的信息:
ps -ef
- 查找具有指定進程 ID 的進程:
ps -p PID
將 PID
替換為要查找的進程的實際進程 ID。這將顯示具有指定進程 ID 的進程的信息。
比如現在我知道了一個進程的 PID 是 1333
,想看詳細信息,那麼可以輸入:
ps -p 1333 -f
- 查找具有指定命令名稱的進程:
ps -C command_name
將 command_name
替換為要查找的進程的命令名稱。這將顯示具有指定命令名稱的進程的信息。
ps 與其他命令一起使用
ps 可以通過管道符 |
和其他命令結合使用。
比如要將 ps
命令的輸出,將這些輸出通過管道交給 grep
命令進行匹配,找到我們想要的進程,起到一個過濾輸出顯示結果的作用,比如像找到屬於 root
用戶的進程,就可以輸入:
ps -ef | grep root
想找到 bash
命令的進程,那麼就可以輸入:
ps -ef | grep bash
總結
ps
命令的使用,相信你通過這一分鐘的學習已經掌握了,這是個很常用的命令,它有很多選項,但實際上,我們平常一般只用到 ps -aux
或者 ps -ef
來查看相關的正在運行的進程信息,或者當某些情況下想要找到某個進程,定位某個進程,就會使用 ps -ef | grep 進程名或者命令名
來進行匹配定位。
以上就是 ps
命令的基本內容,希望本文能夠幫助大家更好地理解和應用 ps
命令。如果你對其他 Linux 命令也感興趣,敬請期待我後續的文章。謝謝大家的閱讀!
最後的最後
希望各位屏幕前的靚仔靚女們給個三連!你輕輕地點了個贊,那將在我的心裡世界增添一顆明亮而耀眼的星!
咱們下期再見!