
在 Linux 系統中,top指令可以用來顯示系統中正在運作的程序的實時狀态,它顯示了一些非常有用的資訊,比如CPU、記憶體消耗、及程序情況等。但還有一個比 top 指令功能更為實用,或者說是top的增強版——htop,它比top有着更加強大的功能并能顯示更多的資訊。

htop是Linux系統下一個基本文本模式的、互動式的程序檢視器,與系統預設自帶的top 程式相比,htop有如下優點:
1)可以将CPU、記憶體、交換分區等使用狀态可以很形象的用進度條表示出來,使得我們可以更加直覺的檢視到伺服器關鍵性能統計資料;
2)支援垂直和水準方向上滾動浏覽程序清單,以檢視所有的程序和完整的指令行,而且支援程序樹方式進行顯示;
3)可以根據關鍵字搜尋相關的程序,而且不需要輸入相關程序号,直接殺掉相關程序;
4)可以通過滑鼠進行相關操作,擁有比top程式更多的選項和功能。
htop指令系統預設是不安裝的,而且紅帽的官方軟體安裝庫中也是不帶的,如果需要使用htop指令,需要我們自行進行安裝,這裡我以CentOS 7為例進行示範:
首先下載下傳epel(RHEL 7)的epel源到/etc/yum.repos.d/目錄中,我這裡用的是阿裡雲的yum源。
[root@xlogin ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@xlogin ~]# yun -y install htop

你也可以通過以下途徑擷取htop:
http://sourceforge.net/projects/htop/
http://hisham.hm/htop

安裝完成後,直接運作htop指令:
在視窗的左上角部分,顯示的是 CPU 負載、記憶體消耗及交換空間的實時資訊,右邊顯示任務(Tasks)、平均負載(Load average)、系統目前時間(Time)、系統運作時間(uptime),下面就是程序實運作狀況,最後一行是F1——F10的功能菜單和對應的字母快捷鍵。
平均負載部分提供了三個數字,表示的是在過去的5分鐘、10分鐘和15分鐘系統的平均負載,假如伺服器是單核CPU,平均負載如果為1,則意味着CPU的使用率是百分之百的。
PID:程序标志号,是非零正整數
USER:程序所有者的使用者名
PR:程序的優先級别
NI:程序的優先級别數值(nice值)
VIRT:virtual memory usage,虛拟記憶體集,程序占用的虛拟記憶體值
RES:resident memory usage,常駐記憶體集,程序占用的實體記憶體值
SHR:shared memory。共享記憶體,程序使用的共享記憶體值
S:程序的狀态,其中S表示休眠,R表示正在運作,Z表示僵死狀态,N表示該程序優先值是負數
%CPU:該程序占用的CPU使用率
%MEM:該程序占用的實體記憶體和總記憶體的百分比
TIME+:該程序啟動後占用的總的CPU時間
COMMAND:程序啟動的啟動指令名稱
htop常用功能鍵:
F1 : 檢視htop使用說明
F2 : 設定
F3 : 搜尋程序
F4 : 過濾器,按關鍵字搜尋
F5 : 顯示樹形結構,功能類似于pstree指令
F6 : 選擇排序方式
F7 : 減少nice值,這樣就可以提高對應程序的優先級
F8 : 增加nice值,這樣可以降低對應程序的優先級
F9 : 殺掉選中的程序
F10 : 退出htop
/ : 搜尋字元
h : 顯示幫助
l :顯示程序打開的檔案: 如果安裝了lsof,按此鍵可以顯示程序所打開的檔案
u :顯示所有使用者,并可以選擇某一特定使用者的程序
s : 将調用strace追蹤程序的系統調用
t : 顯示樹形結構
H :顯示/隐藏使用者線程
I :倒轉排序順序
K :顯示/隐藏核心線程
M :按記憶體占用排序
P :按CPU排序
T :按運作時間排序
這裡以關鍵字搜尋功能為例:按下F4鍵後,出現關鍵字輸入,我們嘗試搜尋關鍵字為dh的程序,比對到的進行就顯示出來了。
除了上面介紹的一些熱鍵,htop 還提供了很有用的指令行選項。
下面列舉幾個htop常用選項:
-s COLUME選項: 按指定的列排序。例如,htop -s PID 指令會按 PID 列的大小排序來顯示。
-u UserName選項: 顯示指定的使用者的程序資訊清單。
-d 選項: 設定重新整理的延遲時間。例如,htop -d 100 指令會使輸出在1秒後才會重新整理(參數 -d 的機關是10微秒)。
例如,htop -u postixf指令會隻顯示出使用者名為postixf的相關程序。
另外htop還有幾個子指令:
l:顯示標明的程序打開的檔案清單;
s:跟蹤標明的程序的系統調用;
t:以層級關系顯示各程序狀态;
a:将標明的程序綁定至某指定的CPU核心;
這裡以我們以rsyslogd程序為例,使用上下方向鍵選擇rsyslogd程序後,按下l會顯示出rsyslogd程序打開的所有檔案清單。
在系統中運作着的實時程序視圖中,要追蹤某個程序是個挺麻煩的問題。因為整個清單在不停的重新整理着,程序的排列順序也在變動着。對于此,htop 提供了一個很簡單的解決方案:顔色标注。你可以标注一個程序條目,它會以不同與其他程序的顔色顯示,是以要追蹤它就變得容易了。要标注某個程序條目,需要做的就是選中此條目,然後按下“空格”鍵。例如,在下面的截圖示例中,我已經顔色标注了三個程序:
最後,我們再以F2功設定為例:
通過F2功能設定功能,我們可以使用F5或F6分别添加到上方的左側或右側,F9可移除等等。每個條目都支援四種顯示方式:Text、Bar、Graph、LED,個人感覺LED顯示效果還是比較更為好看點,但是Graph卻也更為直覺些,哈哈。
這裡都是支援滑鼠操作的,看看下邊這個圖,簡單地設定下,就足以令top指令該羞愧而死了吧!
另外按F2後出現的Display options也是個好東西哦!
比如我這邊一台阿裡雲的伺服器,在使用htop檢視程序資訊的時候,經常會出現很多個程序重複的情況,大家直接看下在選擇Hide userland threads前後的差別吧!
這是我們以AliY為關鍵字搜尋,沒有選擇Hide userland threads前的情況;
同樣以AliY為關鍵字搜尋,這是選擇Hide userland threads後的截圖;