天天看點

top指令

top指令

top

指令提供運作系統的動态實時視圖,其可以顯示系統摘要資訊,以及目前由核心管理的程序或線程的清單,顯示的系統摘要資訊的類型以及為任務顯示的資訊的類型、順序和大小都是使用者可配置的。

文法

top -hv | -bcHisS -d delay -n limit -u|U user | -p pid -w [cols]
           

參數

  • -h

    : 輸出幫助資訊。
  • -v

    : 輸出版本資訊。
  • -b

    : 以批處理模式啟動

    top

    ,這對于從

    top

    向其他程式或檔案發送輸出很有用,在這種模式下,

    top

    将不接受輸入并運作,直到您使用'

    -n

    '指令行選項設定了疊代次數限制或終止為止。
  • -c

    : 以倒轉最後一個記憶中的

    c

    狀态開始,是以如果

    top

    顯示指令行,那麼現在該字段将顯示程式名,反之亦然。
  • -d interval

    : 指定螢幕更新之間的延遲,并覆寫個人配置檔案中的相應值或啟動預設值,啟動後也可以使用

    d

    s

    互動指令更改。
  • -H

    : 訓示

    top

    顯示各個線程,如果沒有此指令行選項,則顯示每個程序中所有線程的總和,啟動後可以使用

    H

  • -i

    : 空閑程序切換,以倒轉最後一個記憶中的

    i

    狀态開始,關閉此切換時,将不顯示自上次更新以來未使用任何

    CPU

    的任務。
  • -n limit

    : 指定

    top

    在結束前應産生的最大疊代次數或幀數。
  • -o

    : 指定将對任務進行排序的字段的名稱,與配置檔案中反映的内容無關,您可以在字段名前面加上

    +

    -

    ,以覆寫排序方向,前導

    +

    将強制從高到低排序,而

    -

    将確定從低到高排序,此選項主要用于支援自動腳本化批處理模式操作。
  • -O

    : 此選項作為上述

    -o

    選項的幫助形式,它将使

    top

    在單獨的一行中列印每個可用的字段名,然後退出。
  • -p pid

    : 僅監視具有指定程序

    ID

    的程序,此選項最多可以給予

    20

    次,也可以提供一個逗号分隔的清單,其中最多包含

    20

    PID

    ,允許兩種方法混合使用,

    pid

    值為零将被視為

    top

    程式運作時的程序

    id

    ,這隻是一個指令行選項,如果您希望傳回正常操作,則無需退出并重新啟動

    top

    ,隻需發出以下任何互動式指令

    =

    u

    U

    ,對于

    p

    u

    U

    指令行選項是互斥的。
  • -s

    : 安全模式操作,以強制的安全模式啟動

    top

    ,即使對于

    root

    也是如此,通過系統配置檔案可以更好地控制此模式。
  • -S

    : 累計時間切換,以倒轉最後一個記憶中的

    S

    狀态開始,當累計時間模式打開時,每個程序都會列出它及其子程序使用的

    cpu

    時間。
  • -u user-id-or-name, -U user-id-or-name

    : 僅顯示使用者

    id

    或使用者名與給定程序比對的程序,

    -u

    選項比對有效使用者,而

    -U

    選項比對任何使用者

    real

    effective

    saved

    filesystem

    ,在感歎号

    !

    前面加上字首使用者

    id

    或名稱訓示

    top

    僅顯示使用者與提供的程序不比對的程序,

    p

    u

    U

  • -w number

    : 在批處理模式下,如果沒有參數,

    top

    将使用

    COLUMNS=

    LINES=

    環境變量(如果設定)格式化輸出,否則,寬度将固定在最大

    512

    列,通過一個參數,可以減少或增加輸出寬度(最多

    512

    行),但行數被認為是無限的,在正常顯示模式下,如果沒有參數,

    top

    将嘗試使用

    COLUMNS=

    LINES=

    環境變量(如果設定)格式化輸出,對于參數,輸出寬度隻能減小,不能增大,無論是使用環境變量還是帶有

    -w

    的參數,當不處于批處理模式時,都不能超過實際的終端次元,注意如果不使用此指令行選項,輸出寬度始終基于調用

    top

    的終端,無論是否處于批處理模式。

操作

以下啟動預設值操作假定沒有相關配置檔案,即沒有使用者自定義,此外帶星号

*

的項目可以通過指令行覆寫。

  • ^Z

    : 挂起。
  • fg

    : 恢複挂起的指令。
  • <Left>

    : 強制螢幕重繪。
  • A

    : 交叉顯示,預設全屏顯示。
  • d

    :

    *

    延遲時間,預設為

    3s

  • H

    *

    線程模式,預設關閉。
  • I

    Irix

    模式,預設開啟。
  • p

    *

    監控

    PID

    ,預設顯示所有程序。
  • 1

    : 檢視伺服器的

    cpu

    邏輯數。
  • M

    : 根據駐留記憶體大小進行排序。
  • P

    : 根據

    CPU

    使用百分比大小進行排序。
  • T

    : 根據時間

    /

    累計時間進行排序。
  • c

    : 切換顯示指令名稱和完整指令行。
  • t

    : 切換顯示程序和

    CPU

    資訊。
  • m

    : 切換顯示記憶體資訊。
  • l

    : 切換顯示平均負載和啟動時間資訊 。
  • o

    : 改變顯示項目的順序。
  • f

    : 從目前顯示中添加或删除列項目。
  • S

    : 切換到累計模式。
  • s

    : 改變兩次重新整理之間的延遲時間,系統将提示使用者輸入新的時間,機關為

    s

    ,如果有小數,就換算成

    ms

  • q

    : 退出

    top

    指令。
  • i

    : 忽略閑置和僵屍程序。
  • k

    : 終止一個程序。

相關資訊

概覽

  • total

    : 程序總數。
  • running

    : 正在運作的程序數。
  • sleeping

    : 睡眠的程序數。
  • stopped

    : 停止的程序數。
  • zombie

    : 僵屍程序數。

CPU資訊

  • us

    : 使用者空間占用

    CPU

    百分比。
  • sy

    : 核心空間占用

    CPU

  • ni

    : 使用者程序空間内改變過優先級的程序占用

    CPU

  • id

    : 空閑

    CPU

  • wa

    : 等待輸入輸出的

    CPU

    時間百分比。
  • hi

    : 硬體

    CPU

    中斷占用百分比。
  • si

    : 軟中斷占用百分比。
  • st:

    虛拟機占用百分比。

列字段

可以使用

f

互動指令自定義列的位置及其是否可顯示。

  • %CPU

    CPU Usage

    CPU

    使用率,任務自上次螢幕更新以來占用的

    CPU

    時間份額,表示為總

    CPU

    時間的百分比,在真正的

    SMP

    環境中,如果一個程序是多線程的,并且

    top

    不是以線程模式運作的,那麼可能會報告大于

    100%

    的數量,您可以使用

    H

    互動指令切換線程模式,同樣對于多處理器環境,如果

    Irixmode

    處于關閉狀态,

    top

    将在

    Solarismode

    下運作,其中任務的

    cpu

    使用量将除以

    cpu

    總數,您可以使用

    I

    互動指令切換

    Irix/Solaris

    模式。
  • %MEM

    Memory Usage (RES)

    ,記憶體使用情況,任務目前使用的可用實體記憶體共享。
  • CGROUPS

    Control Groups

    ,控制組,流程所屬的控制組的名稱,如果不适用于該流程,則為

    -

    ,控制組用于在安裝定義的程序組之間配置設定資源(

    cpu

    、記憶體、網絡帶寬等),它們支援對這些資源的配置設定、拒絕、優先排序、管理和監視進行細粒度控制,一個系統上可以同時存在許多不同的

    cgroup

    層次結構,并且每個層次結構都連接配接到一個或多個子系統,子系統表示單個資源,注意

    : CGROUPS

    字段與大多數列不同,不是固定寬度的,顯示時,它加上任何其他可變寬度列将配置設定所有剩餘螢幕寬度(最多

    512

    個字元),即便如此,這種可變寬度的字段仍然會受到截斷。
  • CODE

    Code Size (KiB)

    ,代碼大小

    KiB

    ,用于可執行代碼的實體記憶體量,也稱為文本駐留集大小或

    TRS

  • COMMAND

    Command Name or Command Line

    ,指令名或指令行,顯示用于啟動任務的指令行或關聯程式的名稱,您可以使用

    c

    在指令行和名稱之間切換,這既是一個指令行選項,也是一個互動式指令,當您選擇顯示指令行時,沒有指令行的程序(如核心線程)将隻顯示程式名,此字段也可能受視圖顯示模式的影響,注意

    COMMAND

    512

    個字元),即便如此,這種可變寬度的字段仍然會受到截斷,當顯示指令行時,此字段尤其如此。
  • DATA

    Data + Stack Size (KiB)

    ,用于可執行代碼以外的實體記憶體量,也稱為資料駐留集大小或

    DRS

  • ENVIRON

    Environment variables

    ,顯示各個程序看到的所有環境變量(如果有),這些變量将以原始的本機順序顯示,而不是您習慣于用非限定的

    set

    看到的排序順序,注意

    ENVIRON

    512

  • Flags

    Task Flags

    ,此清單示任務的目前排程标志,這些标志以十六進制表示,并且不包含零,這些标志正式記錄在

    <linux/sched.h>

    中。
  • GID

    Group Id

    ,有效組

    ID

  • GROUP

    Group Name

    ,有效組名。
  • NI

    Nice Value

    ,負的

    nice

    值意味着更高的優先級,而正的

    nice

    值意味着更低的優先級,此字段中的零表示在确定任務的排程能力時不會調整優先級。
  • P

    Last used CPU (SMP)

    ,表示最後使用的處理器的數字,在真正的

    SMP

    環境中,這可能會頻繁更改,因為核心有意使用弱關聯,另外,運作

    top

    的行為可能會破壞這種弱關聯,并導緻更多程序更頻繁地更改

    cpu

    (因為對

    cpu

    時間的額外需求)。
  • PGRP

    Process Group Id

    ,每個程序都是唯一程序組的成員,該程序組用于配置設定信号,并由終端對其輸入和輸出請求進行仲裁,建立(

    fork

    )流程時,它将成為其父流程組的成員,按照約定,該值等于流程組的第一個成員(稱為流程組長)的流程

    ID

  • PID

    Process Id

    ,任務的唯一程序

    ID

    ,它定期包裝,但從不在零重新啟動,在核心中,它是一個由

    task_struct

    定義的可排程實體,此值還可用作

    :

    程序組

    ID

    、會話負責人的會話

    ID

    、線程組負責人的線程組

    ID

    、程序組負責人的

    TTY

    ID

  • PPID

    Parent Process Id

    ,任務父程序的程序

    ID

    (

    pid

    )。
  • PR

    Priority

    ,任務的排程優先級,如果在該字段中看到

    rt

    ,則表示任務正在實時排程優先級下運作,在

    linux

    下,實時優先級有些誤導,因為傳統上操作本身是不可搶占的,雖然

    2.6

    核心可以被大部分搶占,但并不總是這樣。
  • RES

    Resident Memory Size (KiB)

    ,任務使用的非交換實體記憶體。
  • RUID

    Real User Id

    ,真實使用者

    ID

  • RUSER

    Real User Name

    ,真實的使用者名。
  • S

    Process Status

    ,任務的狀态,可以是:

    D

    不間斷睡眠、

    R

    運作、

    S

    睡眠、

    T

    跟蹤或停止、

    Z

    僵屍,顯示為正在運作的任務應該更恰當地被認為是準備運作的——它們的任務結構隻在

    Linux

    運作隊列中表示,即使沒有真正的

    SMP

    機器,根據

    top

    的延遲間隔和

    nice

    值,也可能會看到許多處于這種狀态的任務。
  • SHR

    Shared Memory Size (KiB)

    ,一個任務可用的共享記憶體量,通常不是所有的記憶體都是駐留的,它隻是反映了可能與其他程序共享的記憶體。
  • SID

    Session Id

    ,會話是程序組的集合,通常由登入

    shell

    建立,新

    fork

    的程序加入其建立者的會話,按照慣例,這個值等于會話的第一個成員的程序

    ID

    ,稱為會話頭,通常是登入

    shell

  • SUID

    Saved User Id

    ,儲存的使用者

    ID

  • SUPGIDS

    Supplementary Group IDs

    ,建立的或從任務父級繼承的任何補充組的

    ID

    ,它們以逗号分隔的清單顯示,注意

    SUPGIDS

    512

  • SUPGRPS

    Supplementary Group Names

    ,登入時建立的或從任務父級繼承的任何補充組的名稱,它們以逗号分隔的清單顯示,注意

    : SUPGRPS

    512

  • SUSER

    Saved User Name

    ,儲存的使用者名。
  • SWAP

    Swapped Size (KiB)

    ,任務位址空間的非駐留部分。
  • TGID

    Thread Group Id

    ,任務所屬的線程組的

    ID

    ,它是線程組負責人的

    PID

    ,在核心術語中,它表示那些共享

    mm_struct

  • TIME

    CPU Time

    ,任務自啟動以來使用的總

    CPU

    時間,當累積模式打開時,每個程序都會列出它及其子程序使用的

    cpu

    時間,使用

    S

    切換累積模式,這既是指令行選項,也是互動式指令,有關此模式的其他資訊,請參閱

    S

    互動指令。
  • TIME+

    CPU Time, hundredths

    ,與

    Time

    相同,但通過百分之一秒反映出更多的粒度。
  • TPGID

    Tty Process Group Id

    ,連接配接的

    tty

    的前台程序的程序組

    ID

    ,如果程序未連接配接到終端,則為

    -1

    ,按照慣例,此值等于流程組長的流程

    ID

  • TTY

    Controlling Tty

    ,控制終端的名稱,這通常是啟動程序的裝置(序列槽、

    pty

    等),并用于輸入或輸出,但是,任務不需要與終端相關聯,在這種情況下,您将看到

    ?

    顯示。
  • UID

    User Id

    ,任務所有者的有效使用者

    ID

  • USED

    Memory in Use (KiB)

    ,此字段表示任務已使用的非交換實體記憶體(

    RES

    )加上其位址空間(

    SWAP

    )的非駐留部分。
  • USER

    User Name

    ,任務所有者的有效使用者名。
  • VIRT

    Virtual Memory Size (KiB)

    ,任務使用的虛拟記憶體總量。它包括所有代碼、資料和共享庫,以及已調出的頁面和已映射但未使用的頁面。
  • WCHAN

    Sleeping in Function

    ,取決于核心連結映射的可用性系統地圖),此字段将顯示任務目前休眠的核心函數的名稱或位址,正在運作的任務将在此列中顯示一個破折号

    -

    ,通過顯示此字段,

    top

    自己的工作集可以增加

    700Kb

    以上,具體取決于核心版本,如果發生這種情況,減少開銷的唯一方法就是停止并重新啟動

    top

  • nDRT

    Dirty Pages Count

    ,自上次寫入輔助存儲器以來已修改的頁數,

    dirty pages

    必須先寫入輔助存儲器,然後才能将相應的實體記憶體位置用于其他虛拟頁。
  • nMaj

    Major Page Fault Count

    ,任務發生的主要頁錯誤數,當程序試圖讀取或寫入其位址空間中目前不存在的虛拟頁時,會發生頁錯誤,一個主要的頁面錯誤是當輔助存儲通路涉及到使該頁面可用時。
  • nMin

    Minor Page Fault count

    ,任務發生的次要頁面錯誤數,當程序試圖讀取或寫入其位址空間中目前不存在的虛拟頁時,會發生頁錯誤,在使該頁可用時,較小的頁錯誤不涉及輔助存儲器通路。
  • nTH

    Number of Threads

    ,與程序關聯的線程數。
  • nsIPC

    IPC namespace

    ,用于隔離程序間通信(

    IPC

    )資源(如

    SystemVIPC

    對象和

    POSIX

    消息隊列)的命名空間的

    Inode

  • nsMNT

    MNT namespace

    ,命名空間的

    Inode

    ,用于隔離檔案系統裝入點,進而提供檔案系統層次結構的不同視圖。
  • nsNET

    NET namespace

    Inode

    ,用于隔離網絡裝置、

    IP

    位址、

    IP

    路由、端口号等資源。
  • nsPID

    PID namespace

    Inode

    ,用于隔離程序

    ID

    号,這意味着它們不必保持唯一,是以,每個這樣的名稱空間都可以有自己的

    init

    PID#1

    )來管理各種初始化任務并擷取孤立的子程序。
  • nsUSER

    USER namespace

    ,用于隔離使用者群組

    ID

    号的命名空間的

    Inode

    ,是以,一個程序可以在使用者名稱空間外有一個普通的未授權使用者

    ID

    ,而在該名稱空間内有一個具有完全根權限的使用者

    ID0

  • nsUTS

    UTS namespace

    ,用于隔離主機名和

    NIS

    域名的命名空間的

    Inode, UTS

    的意思是

    UNIX

    分時系統。
  • vMj

    Major Page Fault Count Delta

    ,自上次更新以來發生的主要頁錯誤數。
  • vMn

    Minor Page Fault Count Delta

    ,自上次更新以來發生的次要頁面錯誤的數量。

示例

顯示程序資訊。

top
           

顯示完整指令。

top -c
           

以批處理模式顯示程式資訊。

top -b
           

以累積模式顯示程式資訊。

top -S
           

設定資訊更新次數,表示更新兩次後終止更新顯示。

top -n 2
           

設定資訊更新時間,表示更新周期為

3

秒。

top -d 3
           

顯示指定的程序資訊,

CPU

、記憶體占用率等。

top -p 131
           

不能利用互動式指令來對程序下指令。

top -s
           

每日一題

https://github.com/WindrunnerMax/EveryDay
           

參考

https://www.computerhope.com/unix/top.htm
https://www.commandlinux.com/man-page/man1/top.1.html
https://www.geeksforgeeks.org/top-command-in-linux-with-examples/
           
下一篇: ip指令