一分鐘學一個 Linux 命令

2023-06-19 06:00:39

前言

大家好,我是 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 命令範例:

  1. 顯示所有正在執行的程序:
ps -e

該命令等價於 ps -A,這裡的 eA 分別是 everyall 的意思,所以等價。

  1. 顯示與終端無關的所有程序:

我們開啟一個新的終端,在新的終端中輸入 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 指的是在沒有控制終端的情況下列出程序,這些顯示的主要是啟動並執行在後臺的程序

例子

  1. 顯示所有程序資訊:
ps -e

這將顯示所有程序的資訊,無論是當前使用者的還是其他使用者的。

  1. 顯示程序的詳細資訊:
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:啟動程序的命令名稱
  1. 顯示程序之間的層級關係:
ps -f

  • UID:程序所有者的使用者 ID
  • PID:程序的唯一 ID
  • PPID:(Parent Process ID)父程序的識別符號
  • C:與 %CPU 的意思相同,程序使用的 CPU 資源的百分比,或者說程序的 CPU 使用率
  • STIME:與 START 的意思相同,程序啟動的時間
  • TTY:與程序相關聯的終端
  • TIME:程序執行過程中佔用 CPU 的總時間
  • CMD:啟動程序的命令名稱

我們可以通過 -ef 來檢視更多的程序的資訊:

ps -ef

  1. 查詢具有指定程序 ID 的程序:
ps -p PID

PID 替換為要查詢的程序的實際程序 ID。這將顯示具有指定程序 ID 的程序的資訊。

比如現在我知道了一個程序的 PID 是 1333,想看詳細資訊,那麼可以輸入:

ps -p 1333 -f

  1. 查詢具有指定命令名稱的程序:
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 命令的基本內容,希望本文能夠幫助大家更好地理解和應用 mvcp 命令。如果你對其他 Linux 命令也感興趣,敬請期待我後續的文章。謝謝大家的閱讀!

最後的最後

希望各位螢幕前的靚仔靚女們給個三連!你輕輕地點了個贊,那將在我的心裡世界增添一顆明亮而耀眼的星!

咱們下期再見!