top命令

top命令

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: 指定屏幕更新之間的延遲,並覆蓋我的配置文件中的相應值或啓動默認值,啓動後也可使用ds交互命令更改。
  • -H: 指示top顯示各個線程,若是沒有此命令行選項,則顯示每一個進程中全部線程的總和,啓動後可使用H交互命令更改。
  • -i: 空閒進程切換,以倒轉最後一個記憶中的i狀態開始,關閉此切換時,將不顯示自上次更新以來未使用任何CPU的任務。
  • -n limit: 指定top在結束前應產生的最大迭代次數或幀數。
  • -o: 指定將對任務進行排序的字段的名稱,與配置文件中反映的內容無關,您能夠在字段名前面加上+-,以覆蓋排序方向,前導+將強制從高到低排序,而-將確保從低到高排序,此選項主要用於支持自動腳本化批處理模式操做。
  • -O: 此選項做爲上述-o選項的幫助形式,它將使top在單獨的一行中打印每一個可用的字段名,而後退出。
  • -p pid: 僅監視具備指定進程ID的進程,此選項最多能夠給予20次,也能夠提供一個逗號分隔的列表,其中最多包含20PID,容許兩種方法混合使用,pid值爲零將被視爲top程序運行時的進程id,這只是一個命令行選項,若是您但願返回正常操做,則無需退出並從新啓動top,只需發出如下任何交互式命令=uU,對於puU命令行選項是互斥的。
  • -s: 安全模式操做,以強制的安全模式啓動top,即便對於root也是如此,經過系統配置文件能夠更好地控制此模式。
  • -S: 累計時間切換,以倒轉最後一個記憶中的S狀態開始,當累計時間模式打開時,每一個進程都會列出它及其子進程使用的cpu時間。
  • -u user-id-or-name, -U user-id-or-name: 僅顯示用戶id或用戶名與給定進程匹配的進程,-u選項匹配有效用戶,而-U選項匹配任何用戶realeffectivesavedfilesystem,在感嘆號!前面加上前綴用戶id或名稱指示top僅顯示用戶與提供的進程不匹配的進程,puU命令行選項是互斥的。
  • -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: 殭屍進程數。

CPU信息

  • us: 用戶空間佔用CPU百分比。
  • sy: 內核空間佔用CPU百分比。
  • ni: 用戶進程空間內改變過優先級的進程佔用CPU百分比。
  • id: 空閒CPU百分比。
  • wa: 等待輸入輸出的CPU時間百分比。
  • hi: 硬件CPU中斷佔用百分比。
  • si: 軟中斷佔用百分比。
  • st:虛擬機佔用百分比。

列字段

可使用f交互命令自定義列的位置及其是否可顯示。linux

  • %CPU: CPU UsageCPU使用率,任務自上次屏幕更新以來佔用的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/
相關文章
相關標籤/搜索