top
命令提供運行系統的動態實時視圖,其能夠顯示系統摘要信息,以及當前由內核管理的進程或線程的列表,顯示的系統摘要信息的類型以及爲任務顯示的信息的類型、順序和大小都是用戶可配置的。html
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
的終端,不管是否處於批處理模式。如下啓動默認值操做假定沒有相關配置文件,即沒有用戶自定義,此外帶星號*
的項目能夠經過命令行覆蓋。node
^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
: 殭屍進程數。us
: 用戶空間佔用CPU
百分比。sy
: 內核空間佔用CPU
百分比。ni
: 用戶進程空間內改變過優先級的進程佔用CPU
百分比。id
: 空閒CPU
百分比。wa
: 等待輸入輸出的CPU
時間百分比。hi
: 硬件CPU
中斷佔用百分比。si
: 軟中斷佔用百分比。st:
虛擬機佔用百分比。可使用f
交互命令自定義列的位置及其是否可顯示。linux
%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
,自上次更新以來發生的次要頁面錯誤的數量。顯示進程信息。git
top
顯示完整命令。github
top -c
以批處理模式顯示程序信息。shell
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/