Linux 中查看進程及資源使用情況


top

自帶的 top 命令類似於平時我們使用的任務管理器,能夠列出當前系統中的進程及資源的使用情況。

$ man top
       top - display Linux tasks

使用起來很簡單,不加任何參數的情況下已經很實用了。其輸出大致是下面這個樣子:

top命令的輸出界面
top命令的輸出界面

q 可退出該界面。

Tips: top 的輸出每 3 秒刷新一次,如果想將畫面定格,Mac 下可使用 control + s 來停止刷新,control + q 恢復刷新。當然,還可以通過在當前界面按 d 來設置刷新頻率,如下圖。

按 <kbd>d</kdb> 設置刷新頻率
d 設置刷新頻率

下面來細看各部分的內容的含義。

top

關於機器運行的統計信息。從👈🏻至👉🏻依次是:

  • 22:23:10 系統當前時間。
  • up 80 days, 11:44 系統已經運行了80多天了。
  • 1 user 當前登錄的用戶數。1 個,也就是我自己。
  • load average: 1.31, 1.33, 1.29 系統平均負荷(Load),三個值,分別表示過去 1 分鍾,5 分鍾和 15 分鍾的平均負荷。

Tasks

進程統計信息,分別是:

  • 66 total 總計 66 個進程。
  • 1 running 其中 1 個正在運行。
  • 65 sleeping 65 個處於休眠。
  • 0 stopped 0 個停止。
  • 0 zombie 以及 0 個僵屍進程

這里,其他都好理解,什么又是僵屍進程?簡單理解它是這么種進程,任務已經完成但沒有退出,仍然顯示在進程列表中。常見的情形是子進程,子進程中任務完成后,主進程還可能保持與其進行通信等。繼續了解可閱讀 What is Zombie Process in Linux?

CPU

這一行是 CPU 使用情況的統計。分成了 8 個部分,他們相加后當然應該是 100% 啦。

  • 100.0 us :(user) 用戶消耗的 CPU 百分比。
  • 0.0 sy :(system) 系統消耗的 CPU。
  • 0.0 ninice 進程消耗的 CPU。
  • 0.0 id :(idle) 空閑的 CPU。
  • 0.0 wa :(waiting) 等待處理 I/O 操作的 CPU 資源。
  • 0.0 hi :(Hardware IRQ)處理硬件交互的 CPU 資源。
  • 0.0 si :(Software Interrupts)處理軟件交互的 CPU 資源。
  • 0.0 st :(Steal Time)如果當前處於虛擬系統(vm)中,此項表示由管理程序從此系統偷走拿去處理其他任務的 CPU 資源。

其他好說,什么是 nice 進程。簡單理解,進程的 nice 值與 priority 都是標識進程優先級的,前者是用戶層面的優先級,后者是 Linux Kernel 使用的值。繼續了解可移步 Process 'niceness' vs. 'priority'

Mem & Swap

這兩行表示物理內存(RAM)及 swap 空間的使用情況。拿內存這一行來說,依次表示:

  • 606704 total 總內存
  • 89464 free 空閑的部分
  • 128300 used 使用的部分
  • 388940 buff/cache buff 或緩存的部分

關於內存這部分,可閱讀此文章 Linux memory management 進一步了解詳情。
關於 swap 的理解可閱讀 All about Linux swap space

進程列表

緊接着列出的是各進程,默認以 CPU 使用量排序。

  • PID: 進程的 id,通過它來操作指定進程。
  • USER: 進程的所有者。
  • PR: 進程的優先級。
  • NI: 進程的 NICE 值,默認 0。
  • VIRT: 進程使用的虛擬內存。
  • RES: 進程使用的物理內存。
  • SHR: 進程使用的共享內存。
  • S: status,進程的狀態: S=睡眠中/sleep R=支行中/running Z=僵屍進程/zombie (S)。
  • %CPU: 進程消耗的 CPU 百分比。
  • %MEM: 進程使用的 RAM 百分比。
  • TIME+: 進程運行時長。
  • COMMAND: 進程名。

以上。

大致了解后便不會感到眼花繚亂了。對於各指標含義了解后,可方便我們在服務端排查問題,分析程序運行是否可控和正常。比如你的 Node.js 服務。

一些 top 命令

除了展現信息,在 top 的輸出界面,還有很多命令可用,比如上面提到的 d 設置刷新時間。

  • 最常用的,發現某個進程快把機器爆掉了,按 k 然后輸入其 PID 將該進程結束掉。
  • o 調整各列的順序/order。
  • u 展示某個用戶的進程。再次進入設置時設置成空則回到展示全部進程。
  • z 高亮運行中的進程。
  • c 展示進程的絕對路徑。

htop

除了自帶的 top 命令,還可安裝另外一個加強版 htop,其界面更加美觀,呈現的東西大同小異,但功能交互上更加方便強大。

$ htop

htop 的界面界面

界面上友好的菜單已經無須多說便能上手。

其他相關命令

  • ps: 列出當前活動的進程信息。
  • iostat:查看 CPU 統計信息及網絡或磁盤的 I/O 信息。
  • vmstat:查看虛機內存的使用情況。
  • mpstat:處理器相關的統計信息。
  • mpstat:處理器相關的統計信息。
  • sar:系統活動信息(system activity report,這全稱是我猜測的)。
  • perf:性能分析工具。

相關資料


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM