一分鐘學一個 Linux 命令 - ps

来源:https://www.cnblogs.com/god23bin/archive/2023/06/18/linux-ps.html
-Advertisement-
Play Games

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

  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 命令的基本內容,希望本文能夠幫助大家更好地理解和應用 ps 命令。如果你對其他 Linux 命令也感興趣,敬請期待我後續的文章。謝謝大家的閱讀!

最後的最後

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

咱們下期再見!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ## 1.常用命令 `創建項目:django-admin startproject 項目名` `創建APP(進入工程目錄):python manage.py startapp 網站名` `創建庫表(進入工程目錄):python manage.py makemigrations` `執行庫表建立(進入 ...
  • # Go 語言之自定義 zap 日誌 [zap 日誌](https://github.com/uber-go/zap):https://github.com/uber-go/zap ## 一、日誌寫入文件 - `zap.NewProduction`、`zap.NewDevelopment` 是預設配 ...
  • (續前文) ## 9、Service實現類代碼示例 ​ ​ 以用戶管理模塊為例,展示Service實現類代碼。用戶管理的Service實現類為UserManServiceImpl。​UserManServiceImpl除了沒有deleteItems方法外,具備CRUD的其它常規方法。實際上​User ...
  • 本文主要介紹在之家廣告業務系統中運用任務編排治理工具的場景及其可以解決的問題,講解任務編排框架的核心要點,以及向大家演示一個任務編排框架的基本結構,讓大家對任務編排工具增強業務開發效率,提高研發質量有更深刻的理解。 ...
  • # Go 語言之 zap 日誌庫簡單使用 ## 預設的 Go log log:https://pkg.go.dev/log ```go package main import ( "log" "os" ) func init() { log.SetPrefix("LOG: ") // 設置首碼 f, ...
  • ## 前言 使用 ABP vNext(下文簡稱 ABP)時,通常都是從 cli 開始新建模板,從一個空項目開始。對已經存續的項目來說,現有的數據,特別是用戶等核心數據需要進行遷移。 老的項目,隨著規模越來越大,每次修改都需要更改非常多地方,最重要的是,共用資料庫使得維護起來需要小心翼翼。為了後續維護 ...
  • 經過前幾篇文章的講解,初步瞭解ASP.NET Core MVC項目創建,啟動運行,以及命名約定,創建控制器,視圖,模型,接收參數,傳遞數據ViewData,ViewBag,路由,頁面佈局,wwwroot和客戶端庫,Razor語法,EnityFrameworkCore與資料庫,HttpContext,... ...
  • # 個人博客文章歸檔實現📑 # 前言 隨著博客的文章越來越多,那麼歸檔就顯得尤為重要,然後最近也是沒什麼課,加緊更新一下博客,之前也是更新了評論、留言板。 然後博客是使用的前後的不分離的項目,數據返回一般都是用的.NET的強類型數據返回,也會用到分佈視圖。 重點是一段sql查詢困惱我許久,在後端接 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...