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