Linux怎么查看正在運行的進程的CPU和內存使用率?
前言
大多數linux進程(即使沒有明確運行)都在后臺運行,以提供服務,并為用戶調用所執行的應用程序做好準備。
在linux中,有一個命令允許您查看系統中的資源是如何使用(或浪費)的,我想快速解釋一下如何監視運行在您機器上的進程。
統一查看正在運行進程的命令行工具-top
答案很簡單,有一個簡單的linux命令可以讓您精確地查看正在計算機上運行的進程,以及內存使用情況、CPU消耗和有關使用的交換內存的詳細信息。它可以從您最喜歡的shell訪問。
該命令是top,它允許您查看機器中當時正在發生的事情,更一般地說是您的系統狀態,包括正在運行的進程。
- top
你將會看到以下輸出結果:
Linux怎么查看正在運行的進程
好了,正在運行的進程狀態已經顯示出來了,怎么看這個結果呢?
開始的時候輸出可能會讓人感到困惑,請查看下面的說明,以便更好地理解正在運行的進程狀態。
1. 系統正常運行時間和系統平均負載
第一行顯示了系統的正常運行時間,即系統運行了多少小時或幾天
- top - 12:45:10 up 9 days, 20:11, 1 user, load average: 0.00, 0.01, 0.05
比如,正在運行的狀態顯示以下:
- 12:45:10 當前時間
- 9 days, 20:11 系統啟動運行的時間
- 1 user 表示有1個用戶正在使用系統
- 接下來的3個值顯示了最后1分鐘/5分鐘/15分鐘的平均負載:0.00, 0.01, 0.05
2. 監控任務狀態
第二行提供關于系統中實際加載的進程狀態的信息
- Tasks: 133 total, 1 running, 132 sleeping, 0 stopped, 0 zombie
基本上,數字附近的單詞是任務的當前狀態。
Linux怎么查看正在運行的進程占用的CPU
第三行代表系統中CPU狀態的簡要概述。
- %Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 s
每個參數表示cpu狀態的不同指示符,簡單來說,這就是它們的含義:
- us 用戶CPU時間——CPU占用用戶運行的進程的時間
- sy 系統CPU時間—與我們相似,但是它定義了運行linux內核和相關進程所花費的時間
- ni nice CPU時間——當使用nice命令進行優先級排序時,它指示CPU運行這些進程所花費的時間。
- wa I/O等待——表示當I/O操作完成時,CPU必須等待的時間。
- hi 硬件IRQ——CPU為硬件中斷服務所花費的時間
- si 軟件中斷——類似于hi,但它指的是軟件中斷
- st 偷取時間——由于每個現代CPU都支持虛擬化,所以這個索引指的是管理程序偷取的CPU數量,用于執行運行虛擬機之類的任務。
怎么查看內存使用率,物理和交換空間
下面兩行代碼概述了系統中物理內存和交換內存的內存狀態。
由于現代系統大量使用緩存,您將更有可能經??吹轿锢韮却鎺缀醣徽紳M了。
相反,當物理內存不能處理更多的東西時,交換空間是一種“備份”,因此它被迫在磁盤上寫東西以避免丟失。如果交換空間的使用高,這是一個清楚的警告,表明某些事情沒有按照預期進行。
這一行是指物理內存:
- KiB Mem : 4026096 total, 277300 free, 1235948 used, 2512848 buff/cache
下一行就是給出交換內存的信息
- KiB Swap: 0 total, 0 free, 0 used. 2252720 avail Mem
好了,我們的想查看的進程在哪里?
在這里,前面幾行之外的列表表示在您的系統上正在運行的進程、守護進程和服務的列表,每一行都帶有關于單個進程的變量說明。以下是我的查看記錄:
- PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
- 1598 mysql 20 0 1642980 190732 9364 S 0.3 4.7 22:05.24 mysqld
- 1788 root 20 0 162012 2300 1612 R 0.3 0.1 0:00.07 top
- 76024 root 39 19 350308 8964 4192 S 0.3 0.2 9:48.53 bcm-si
- 1 root 20 0 191000 3904 2584 S 0.0 0.1 2:46.70 systemd
以上輸出結果提供了關于在您的系統上正在運行的進程的各種信息,稍后我將嘗試向您解釋這些信息。
- PID – 進程的ID號
- USER – 顯示用戶正在運行的進程
- PR – 此指示符顯示進程優先級,如果您在輸出結果中看到“rt”表示進程具有實時優先級,則此指示符用于系統進程。
- NI – 指示是否使用命令nice來增強給定進程的優先級。
- VIRT – 指進程使用的虛擬內存的數量,這意味著它在內存中存儲數據、庫和交換的頁面
- RES – 物理內存上有多少進程處于“RES”狀態
- SHR – 指示為進程共享的內存段的大小
- S – 當前正在運行的進程的狀態
- %CPU – 共享cpu運行給定正在運行進程所花費的時間百分比
- %MEM – 正在運行的進程使用的物理內存的百分比
- %TIME+ – cpu運行給定正在運行的進程所花費的總時間
- COMMAND – 用于初始化進程的命令
我該怎么處理這些信息呢?
收集到這些正在運行的進程信息后,這些信息將幫助您排除各種問題,比如內存/CPU/泄漏、OOM錯誤,或者僅僅是了解當時正在運行的進程。
當然,你可以結合grep命令過濾和定制你想要看的內容,比如
- top |grep NI
總結
本文主要介紹了Linux怎么使用top命令查看正在運行的進程。希望本文能幫助您更好地理解如何使用這個命令。