1. 程式人生 > >linux下top命令引數解釋+free -m

linux下top命令引數解釋+free -m

top命令是Linux下常用的效能分析工具,能夠實時顯示系統中各個程序的資源佔用狀況,類似於Windows的工作管理員。下面詳細介紹它的使用方法。

top - 01:06:48 up  1:22,  1 user,  load average: 0.06, 0.60, 0.48
Tasks:  29 total,   1 running,  28 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.3% us,  1.0% sy,  0.0% ni, 98.7% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:    191272k total,   173656k used,    17616k free,    22052k buffers
Swap:   192772k total,        0k used,   192772k free,   123988k cached

   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
  1379 root      16   0  7976 2456 1980 S  0.7  1.3   0:11.03 sshd
14704 root      16   0  2128  980  796 R  0.7  0.5   0:02.72 top
     1 root      16   0  1992  632  544 S  0.0  0.3   0:00.90 init
     2 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0
     3 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 watchdog/0

統計資訊區

前五行是系統整體的統計資訊。第一行是任務佇列資訊,同 uptime 命令的執行結果。其內容如下:

01:06:48 當前時間
up 1:22 系統執行時間,格式為時:分
1 user 當前登入使用者數
load average: 0.06, 0.60, 0.48 系統負載,即任務佇列的平均長度。
三個數值分別為 1分鐘、5分鐘、15分鐘前到現在的平均值。

第二、三行為程序和CPU的資訊。當有多個CPU時,這些內容可能會超過兩行。內容如下:

Tasks: 29 total 程序總數
1 running 正在執行的程序數
28 sleeping 睡眠的程序數
0 stopped 停止的程序數
0 zombie 殭屍程序數
Cpu(s): 0.3% us 使用者空間佔用CPU百分比
1.0% sy 核心空間佔用CPU百分比
0.0% ni 使用者程序空間內改變過優先順序的程序佔用CPU百分比
98.7% id 空閒CPU百分比
0.0% wa 等待輸入輸出的CPU時間百分比
0.0% hi
0.0% si

最後兩行為記憶體資訊。內容如下:

Mem: 191272k total 實體記憶體總量
173656k used 使用的實體記憶體總量
17616k free 空閒記憶體總量
22052k buffers 用作核心快取的記憶體量

Swap: 192772k total

交換區總量
0k used 使用的交換區總量
192772k free 空閒交換區總量
123988k cached 緩衝的交換區總量。
記憶體中的內容被換出到交換區,而後又被換入到記憶體,但使用過的交換區尚未被覆蓋,
該數值即為這些內容已存在於記憶體中的交換區的大小。
相應的記憶體再次被換出時可不必再對交換區寫入。

程序資訊區

統計資訊區域的下方顯示了各個程序的詳細資訊。首先來認識一下各列的含義。

序號 列名 含義
a PID 程序id
b PPID 父程序id
c RUSER Real user name
d UID 程序所有者的使用者id
e USER 程序所有者的使用者名稱
f GROUP 程序所有者的組名
g TTY 啟動程序的終端名。不是從終端啟動的程序則顯示為 ?
h PR 優先順序
i NI nice值。負值表示高優先順序,正值表示低優先順序
j P 最後使用的CPU,僅在多CPU環境下有意義
k %CPU 上次更新到現在的CPU時間佔用百分比
l TIME 程序使用的CPU時間總計,單位秒
m TIME+ 程序使用的CPU時間總計,單位1/100秒
n %MEM 程序使用的實體記憶體百分比
o VIRT 程序使用的虛擬記憶體總量,單位kb。VIRT=SWAP+RES
p SWAP 程序使用的虛擬記憶體中,被換出的大小,單位kb。
q RES 程序使用的、未被換出的實體記憶體大小,單位kb。RES=CODE+DATA
r CODE 可執行程式碼佔用的物理記憶體大小,單位kb
s DATA 可執行程式碼以外的部分(資料段+棧)佔用的物理記憶體大小,單位kb
t SHR 共享記憶體大小,單位kb
u nFLT 頁面錯誤次數
v nDRT 最後一次寫入到現在,被修改過的頁面數。
w S 程序狀態。
D=不可中斷的睡眠狀態
R=執行
S=睡眠
T=跟蹤/停止
Z=殭屍程序
x COMMAND 命令名/命令列
y WCHAN 若該程序在睡眠,則顯示睡眠中的系統函式名
z Flags 任務標誌,參考 sched.h

預設情況下僅顯示比較重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通過下面的快捷鍵來更改顯示內容。

更改顯示內容

通過 鍵可以選擇顯示的內容。按 f 鍵之後會顯示列的列表,按 a-z 即可顯示或隱藏對應的列,最後按回車鍵確定。

按 o 鍵可以改變列的顯示順序。按小寫的 a-z 可以將相應的列向右移動,而大寫的 A-Z 可以將相應的列向左移動。最後按回車鍵確定。

按大寫的 F 或 O 鍵,然後按 a-z 可以將程序按照相應的列進行排序。而大寫的 R 鍵可以將當前的排序倒轉。

命令使用

1. 工具(命令)名稱
top
2.工具(命令)作用
顯示系統當前的程序和其他狀況; top是一個動態顯示過程,即可以通過使用者按鍵來不斷重新整理當前狀態.如果在前臺執行該命令,它將獨佔前臺,直到使用者終止該程式為止. 比較準確的說,top命令提供了實時的對系統處理器的狀態監視.它將顯示系統中CPU最“敏感”的任務列表.該命令可以按CPU使用.記憶體使用和執行時間對任務進行排序;而且該命令的很多特性都可以通過互動式命令或者在個人定製檔案中進行設定. 
3.環境設定
在Linux下使用。
4.使用方法
4.1使用格式
top [-] [d] [p] [q] [c] [C] [S] [s]  [n] 
4.2引數說明
 指定每兩次螢幕資訊重新整理之間的時間間隔。當然使用者可以使用s互動命令來改變之。
 p 通過指定監控程序ID來僅僅監控某個程序的狀態。
 q該選項將使top沒有任何延遲的進行重新整理。如果呼叫程式有超級使用者許可權,那麼top將以儘可能高的優先順序執行。
 S 指定累計模式
 s 使top命令在安全模式中執行。這將去除互動命令所帶來的潛在危險。
 i  使top不顯示任何閒置或者僵死程序。
 c  顯示整個命令列而不只是顯示命令名
4.3其他
  下面介紹在top命令執行過程中可以使用的一些互動命令。從使用角度來看,熟練的掌握這些命令比掌握選項還重要一些。這些命令都是單字母的,如果在命令列選項中使用了s選項,則可能其中一些命令會被遮蔽掉。
  Ctrl+L 擦除並且重寫螢幕。
  h或者? 顯示幫助畫面,給出一些簡短的命令總結說明。
  k 終止一個程序。系統將提示使用者輸入需要終止的程序PID,以及需要傳送給該程序什麼樣的訊號。一般的終止程序可以使用15訊號;如果不能正常結束那就使用訊號9強制結束該程序。預設值是訊號15。在安全模式中此命令被遮蔽。
  忽略閒置和僵死程序。這是一個開關式命令。
  退出程式。
  重新安排一個程序的優先級別。系統提示使用者輸入需要改變的程序PID以及需要設定的程序優先順序值。輸入一個正值將使優先順序降低,反之則可以使該程序擁有更高的優先權。預設值是10。
  切換到累計模式。
  改變兩次重新整理之間的延遲時間。系統將提示使用者輸入新的時間,單位為s。如果有小數,就換算成m s。輸入0值則系統將不斷重新整理,預設值是5 s。需要注意的是如果設定太小的時間,很可能會引起不斷重新整理,從而根本來不及看清顯示的情況,而且系統負載也會大大增加。
  f或者F 從當前顯示中新增或者刪除專案。
  o或者O 改變顯示專案的順序。
  切換顯示平均負載和啟動時間資訊。
  m 切換顯示記憶體資訊。
  切換顯示程序和CPU狀態資訊。
  切換顯示命令名稱和完整命令列。
  M 根據駐留記憶體大小進行排序。
  根據CPU使用百分比大小進行排序。
  T 根據時間/累計時間進行排序。
    W 將當前設定寫入~/.toprc檔案中。這是寫top配置檔案的推薦方法。

檢視Linux伺服器記憶體使用情況

檢視記憶體使用情況,可以使用命令 free -m

其結果大致如下:

total used free shared buffers cached

Mem: 32108 30681 1426 0 123 21165

-/+ buffers/cache: 9392 22715

Swap: 34287 1262 33025

在第一部分Mem 行中有如下引數:

* total: 記憶體總數,即32108 MB

* used: 已經使用的記憶體數,即 30681 MB

* free: 空閒的記憶體數:即 1426MB

* shared:當前已廢棄不用,總是 0

* buffers Buffer: 快取記憶體數,即 123 MB

* cached Page: 快取記憶體數,即 421MB

其中,記憶體總數與已經使用記憶體數和空閒記憶體數的關係是:

total (32108) = used (30681) + free (1426)

在第二部分內容(-/+ buffers/cache)中個引數如下所示:

(-buffers/cache): 真正使用的記憶體數,即9392M,他指的是第一部分的 used - buffers - cached

(+buffers/cache): 可用的記憶體數,即22715M,他指的是第一部分的 free + buffers + cached

其含義可以理解為:-buffers/cached 反映的是被程式實實在在用掉的記憶體,而 +buffers/cached反映的是可以被使用(或者說挪用)的記憶體總數。

第三部分指交換分割槽。(書上說“大家都明白,這裡就不再講了”,可是我還不清楚,一會兒再查吧)

對作業系統來講,used 和 free都是Mem的引數,所以 buffers/cached這兩項對於作業系統來講都是已經被使用的記憶體,所以呢 free的就比較少;

而對於應用程式來說呢,buffers/cached等同於可用的記憶體,因為buffers/cached可提高程式執行的效能,當程式使用記憶體時,buffers/cached很快就會被使用。

所以從應用程式的角度來看,應以(-/+ buffers/cached)的free 和 used為主,即我們主要與他相關的free和used就可以了。

我們在觀察Linux的記憶體使用情況時,只要沒發現用swap的交換空間,就不必擔心自己的記憶體太少。

如果常常看到swap用了很多,那麼你就要考慮加實體記憶體了。這也是在Linux伺服器上看記憶體是否夠用的標準。

例子

[[email protected] mydata]# free -m
             total       used       free     shared    buffers     cached
Mem:         32108      27021       5087          0        737      23379
-/+ buffers/cache:       2904      29204
Swap:         7999         80       7919
[[email protected] mydata]# bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
2904+29204
32108
27021-737-23379
2905
5087+737+23379
29203

buffer cache,又稱bcache,其中文名稱為緩衝器高速緩衝儲存器,簡稱緩衝器高緩。另外,buffer cache按照其工作原理,又被稱為塊高緩。

在linux讀寫檔案時,它用於快取物理磁碟上的磁碟塊,從而加快對磁碟上資料的訪問。

buffer cache的內容對應磁碟上一個塊(block),塊通常為1K,都是連續的。

在linux下,為了更有效的使用實體記憶體,作業系統自動使用所有空閒記憶體作為Buffer Cache使用。當程式需要更多記憶體時,作業系統會自動減小Cache的大小

  buffer 與cache 的區別

A buffer is something that has yet to be “written” to disk. A cache is something that has been “read” from the disk and stored for later use.

  更詳細的解釋參考:Difference Between Buffer and Cache

  對於共享記憶體(Shared memory),主要用於在UNIX 環境下不同程序之間共享資料,是程序間通訊的一種方法,一般的應用程式不會申請使用共享記憶體,筆者也沒有去驗證共享記憶體對上面等式的影響。如果你有興趣,請參考:What is Shared Memory?

  cache 和 buffer的區別:

  Cache:快取記憶體,是位於CPU與主記憶體間的一種容量較小但速度很高的儲存器。由於CPU的速度遠高於主記憶體,CPU直接從記憶體中存取資料要等待一定時間週期,Cache中儲存著CPU剛用過或迴圈使用的一部分資料,當CPU再次使用該部分資料時可從Cache中直接呼叫,這樣就減少了CPU的等待時間,提高了系統的效率。Cache又分為一級Cache(L1 Cache)和二級Cache(L2 Cache),L1 Cache整合在CPU內部,L2 Cache早期一般是焊在主機板上,現在也都整合在CPU內部,常見的容量有256KB或512KB L2 Cache.

  Buffer:緩衝區,一個用於儲存速度不同步的裝置或優先順序不同的裝置之間傳輸資料的區域。通過緩衝區,可以使程序之間的相互等待變少,從而使從速度慢的裝置讀入資料時,速度快的裝置的操作程序不發生間斷。

  Free中的buffer和cache:(它們都是佔用記憶體):

  buffer :作為buffer cache的記憶體,是塊裝置的讀寫緩衝區

  cache:作為page cache的記憶體, 檔案系統的cache

  如果 cache 的值很大,說明cache住的檔案數很多。如果頻繁訪問到的檔案都能被cache住,那麼磁碟的讀IO 必會非常小。


相關推薦

linuxtop命令引數解釋+free -m

top命令是Linux下常用的效能分析工具,能夠實時顯示系統中各個程序的資源佔用狀況,類似於Windows的工作管理員。下面詳細介紹它的使用方法。 top - 01:06:48 up  1:22,  1 user,  load average: 0.06, 0.60,

linuxalias命令具體解釋

margin san 登錄 white gre con 變量 每次 ext linux下alias命令具體解釋 用途說明 設置命令的別名。在linux系統中假設命令太長又不符合用戶的習慣,那麽我們能夠為它指定一個別名。盡管能夠為命令建立“鏈接” 解決長文件名

Linuxtop命令

top命令是Linux下常用的效能分析工具,能夠實時顯示系統中各個程序的資源佔用狀況,常用於服務端效能分析。 top命令說明 [[email protected] ~]$ top top - 16:07:37 up 241 days, 20:11, 1 user, load a

Linuxtop命令引數詳解

本篇博文主要講解有關top命令,top命令的主要功能是檢視程序活動狀態以及一些系統狀況。 TOP是一個動態顯示過程,即可以通過使用者按鍵來不斷重新整理當前狀態.如果在前臺執行該命令,它將獨佔前臺,直到使用者終止該程式為止.比較準確的說,top命令提供了實時的對

圖解linuxtop命令的使用

top命令是Linux上進行系統監控的首選命令,但有時候卻達不到我們的要求,比如當前這臺伺服器,top監控有很大的侷限性。這臺伺服器執行著websphere叢集,有兩個節點服務,就是【top檢視 01】中的老大、老二兩個java程序,top命令的監控最小單位是程序,所以看不到我關心的java執行緒數和客戶連線

linuxtop命令詳解

1、top 先看一張linux下執行top命令後的圖:(注:如果想退出直接ctrl+c或者q即可) 下面我們來逐行分析一下: 第一行 12:17:13——當前系統時間 1 day ,1:42——系統已經運行了1天1小時42分鐘(這期間沒有重啟過) 2 users——當前有

linux系統top命令的詳細用法、引數詳解、以及模式配置

用過linux系統的人都知道top命令,它是Linux下一個最常用的效能分析工具,能夠實時顯示系統中各個程序的資源佔用狀況,類似於Windows的工作管理員。 top顯示系統當前的程序和其他狀況,是一個動態顯示過程,即可以通過使用者按鍵來不斷重新整理當前狀態。如果在前臺執行該命令,它

linux xargs 命令的 n1 引數

今天碰到個小問題:想批量解壓 *.tar.gz 檔案。  一開始,嘗試了這些: tar -zxvf *.tar.gz ## 報錯 ls *.tar.gz | xargs tar -zxvf ## 報錯 後來,查了資料,xargs 命令加上 n

linux常用命令與常用操作用法及解釋(初學者必備)

1、環境變數      (1)列印環境變數:ehco  $PATH      (2)新增到環境變數(一般放在當前使用者的宿主目錄~/下的.bashrc檔案裡):export PATH=/usr/local/bin:$PATH                 解釋:每一次

linux系統top命令進行記憶體監控

今天進行壓力測試,測試進行了兩波後,發現使用top命令監控系統性能,mem中used很高: 一段時間甚至接近total 很疑惑到底為什麼,開始懷疑是記憶體洩露,但是服務已經全部殺掉後used仍然保持很高。 查詢了下linux下使用top命令進行監控的詳細解釋,網上對這個的

Linux常用命令之sed學習總結

linux sed sed命令 正則表達式 sed總結 Sed功能說明:Sed是linux下一個強大的文本文件處理工具,通過對文件增加、刪除、查找、查詢操作,配合正則表達式以實現工作中的各種需求。同時也是一名運維人員必須掌握的核心技能。---------------------------

linuxcat命令詳解

forever ron localhost root sta testing 幫助 查看 一點 1、cat 顯示文件連接文件內容的工具; cat 是一個文本文件查看和連接工具。查看一個文件的內容,用cat比較簡單,就是cat 後面直接接文件名。 比如: de>[[

linuxyum命令出現Loaded plugins: fastestmirror

tle enable yum test enabled net post sdn http linux下yum命令出現Loaded plugins: fastestmirror yum install的時候提示:Loaded plugins: fastestmirror

linuxwget命令,支持斷點續傳,ftp、http、https等協議

strong 工作 等待 命名 wget命令 source cmd itl 操作 轉載的地址:http:[email protected]/* *//blog/static/32097310201171833420905/ 今天操作遠端機器的時候發現少一個安裝

LinuxDiff命令

普通 命令 圖形化 標準輸入 們的 sina 工具 文件 內容 一般正常比較兩個文件用vimdiff,算是直接進入vim界面,如果比較兩個文件夾下面的文件,可以用diff,註意,這裏只會比較文件夾下面的同名文件,他會列出不一樣的點. 參考Linux下Diff命令使用方法 d

Linux基礎命令(一)

linux find 實戰操作 每天積累知識就會有成長,只要付出在不久的將來一定會有收獲,可能回來的晚點,但是一定要貴在堅持,今天第一次發博客,如不出意外情況我每天都會發的,這個是我總結的find命令的一些實戰,希望我總結的知識點在今後會對大家有幫助。find -name "*a" #以a

Linuxfind命令的使用

find為什麽要使用find命令? Linux系統中有著成千上萬的文件,如果你想要找到自己想要的文件,一款查找軟件是必不可少的,而locate是根據其生成的數據庫進行查找,雖然速度會略快,但非實時查找,有些新的文件或目錄是匹配不到的,而且locate是模糊匹配,而find命令為實時查找,且為精確匹配,如

linuxvim命令詳解

但是 左移 功能 命令 file lips 查找替換 括號匹配 所想 高級一些的編輯器,都會包含宏功能,vim當然不能缺少了,在vim中使用宏是非常方便的::qx 開始記錄宏,並將結果存入寄存器xq 退出記錄模式@x 播放記錄在x寄存器中的宏命令稍微

【轉載】Linuxchkconfig命令詳解

name scrip 再次 http 缺省 重新 禁止 level pool chkconfig命令主要用來更新(啟動或停止)和查詢系統服務的運行級信息。謹記chkconfig不是立即自動禁止或激活一個服務,它只是簡單的改變了符號連接。 使用語法:chkconfig [--

linux 命令

print code col top clas class span log lin 1 find / -name 文件名 -type d 查找目錄 2 3 find / -name 文件名 -print 查找文件名 1 service 程序