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/