每天一個linux命令:top、htop

每天一個linux命令:top、htop

更多精彩請關注:www.zicreate.com

1.top命令功能

top 命令可以實時動態地查看系統的整體運行情況,是一個綜合了多方信息監測系統性能和運行信息的實用工具。但是由於該工具界面很不友好,弄用好的人不多,一般只是用來簡單看一下進程佔用情況,本文只簡單介紹下top的常用功能,重點介紹htop命令。

2.啓動top

$ top
top - 15:54:51 up 25 days,  2:08,  1 user,  load average: 7.21, 2.27, 0.99
Tasks: 177 total,  11 running, 165 sleeping,   0 stopped,   1 zombie
%Cpu(s):  1.2 us,  0.2 sy,  0.0 ni, 98.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 15994424 total, 10238564 free,  1489540 used,  4266320 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 13376548 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
24963 root      20   0    7252     96      0 R  93.8  0.0   0:52.20 stress
24965 root      20   0    7252     96      0 R  93.8  0.0   0:52.52 stress
24966 root      20   0    7252     96      0 R  93.8  0.0   0:49.96 stress
24970 root      20   0    7252     96      0 R  93.8  0.0   0:51.72 stress
24967 root      20   0    7252     96      0 R  87.5  0.0   0:49.78 stress
24972 root      20   0    7252     96      0 R  81.2  0.0   0:49.42 stress
24971 root      20   0    7252     96      0 R  62.5  0.0   0:49.51 stress
24964 root      20   0    7252     96      0 R  56.2  0.0   0:51.85 stress
24968 root      20   0    7252     96      0 R  50.0  0.0   0:52.07 stress
24969 root      20   0    7252     96      0 R  50.0  0.0   0:49.41 stress


第一行:

top - 15:54:51 up 25 days, 2:08, 1 user, load average: 7.21, 2.27, 0.99

當前系統時間: 15:54:51
系統運行機時間:25 days, 2:08 (重啓時會重置)
當前登錄用戶數量: 1
系統1分鐘、5分鐘、15分鐘負載: 7.21, 2.27, 0.99 如果負荷數據大於當前系統 CPU線程數,說明系統負荷太重。

查看系統 CPU線程數的方法如下:

方法1$ lscpu | grep -E "^CPU\(s\)|Socket|Model name"
CPU(s):                64                                                                                        CPU線程數
Socket(s):             2                                                                                         CPU數量
Model name:            Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GHz

方法2$ cat /proc/cpuinfo | grep 'model name' | wc -l
64

第一行的信息也可以通過 w 或者 uptime 獲取:

$  w
 05:15:06 up 25 days,  7:19,  2 users,  load average: 0.14, 0.15, 0.30
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0     demo            19Dec17  2.00s  0.23s  0.06s w

$ uptime
 05:15:12 up 25 days,  7:19,  2 users,  load average: 0.21, 0.16, 0.31

第二行:

Tasks: 177 total, 11 running, 165 sleeping, 0 stopped, 1 zombie

系統現在共有177個進程,其中處於運行中的有11個,165個在休眠(sleep),stoped狀態的有0個,zombie狀態(殭屍)的有1個。

殭屍進程:殭屍進程是指的父進程先與子進程退出,子進程dead,但沒有進程回收該進程的信息,就成爲殭屍進程。殭屍進程在進程表 (processs table)中仍佔了一個位置(slot),所以,雖然殭屍進程已經死亡,但是仍然佔用了系統資源,如果系統中存在大量殭屍進行會影響系統性能。關於殭屍進程的詳細說明見後期文章。

第三行:

%Cpu(s): 1.2 us, 0.2 sy, 0.0 ni, 98.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

1.2% us — 用戶空間佔用CPU的百分比。
0.2% sy — 內核空間佔用CPU的百分比。
0.0% ni — 改變過優先級的進程佔用CPU的百分比
98.6% id — 空閒CPU百分比
0.0% wa — IO等待佔用CPU的百分比
0.0% hi — 硬中斷(Hardware IRQ)佔用CPU的百分比
0.0% si — 軟中斷(Software Interrupts)佔用CPU的百分比

第四行:

KiB Mem : 15994424 total, 10238564 free, 1489540 used, 4266320 buff/cache

15994424 total — 物理內存總量(16GB)
10238564 used — 使用中的內存總量(10GB)
1489540 free — 空閒內存總量(1.4GB)
4266320 buffers — 緩存的內存量 (4GB)

第五行:

KiB Swap: 0 total, 0 free, 0 used. 13376548 avail Mem
0 — 交換區總量
0 — 使用的交換區總量
0 — 空閒交換區總量
13376548 — 緩衝的交換區總量(13GB)

進程信息頭

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

PID — 進程id
USER — 進程所有者
PR — 進程優先級
NI — nice值。負值表示高優先級,正值表示低優先級
VIRT — 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
RES — 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
SHR — 共享內存大小,單位kb
S — 進程狀態。D=不可中斷的睡眠狀態 R=運行 S=睡眠 T=跟蹤/停止 Z=殭屍進程
%CPU — 上次更新到現在的CPU時間佔用百分比,如果出現 200% 這樣的是因爲有多核。
%MEM — 進程使用的物理內存百分比
TIME+ — 進程使用的CPU時間總計,單位1/100秒
COMMAND — 進程名稱(命令名/命令行)

快捷鍵

按鍵盤數字“1”,可監控每個邏輯CPU的狀況:

$ top
top - 04:42:29 up 16 days,  3:12,  3 users,  load average: 0.05, 0.11, 0.18
Tasks: 348 total,   1 running, 346 sleeping,   0 stopped,   1 zombie
%Cpu0  :  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  0.3 us,  1.3 sy,  0.0 ni, 98.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu2  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu3  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

按‘q’ 鍵退出top。

掌握上面的基本top就夠用了,要使用更多功能推薦htop。

3. htop

htop 數據界面非常美觀,但是在本文中無法顯示顏色之類的信息,大致框架如下所示:

$ htop

  1  [||                                         2.2%]   5  [||                                         1.3%]
  2  [||||                                       5.1%]   6  [                                           0.0%]
  3  [|||                                        2.6%]   7  [                                           0.0%]
  4  [|||                                        1.4%]   8  [|                                          1.3%]
  Mem[||||||||||||||||||                  2.18G/15.3G]   Tasks: 63, 1270 thr; 1 running
  Swp[                                          0K/0K]   Load average: 0.17 0.25 0.37
                                                         Uptime: 25 days, 03:10:24

  PID USER      PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
    1 root       20   0  189M  5480  2720 S  0.0  0.0  0:08.84 /usr/lib/systemd/systemd --switched-root --system -
31143 root       20   0  125M  2256   956 S  0.0  0.0  0:01.86 ├─ SCREEN -dmS analysis
31144 root       20   0  112M  2272  1740 S  0.0  0.0  0:00.00 │  ├─ /bin/bash
30264 root       20   0  112M  2196  1692 S  0.0  0.0  0:00.00 │  ├─ /bin/bash
10787 root       20   0  746M 52344 11172 S  0.0  0.3  0:02.18 │  │  └─ python analysis.py

F1Help  F2Setup F3SearchF4FilterF5SortedF6CollapF7Nice -F8Nice +F9Kill  F10Quit

其實本文到這裏已經差不多了,只要你會用 F1 鍵其他的都可以查看htop的幫助信息。剩下的大家多練習即可。

over.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章