Linux中top和free命令詳解(轉)

来源:http://www.cnblogs.com/zr520/archive/2017/01/09/6266085.html
-Advertisement-
Play Games

鏈接: top:命令提供了實時的對系統處理器的狀態監視.它將顯示系統中CPU最“敏感”的任務列表. 該命令可以按CPU使用.記憶體使用和執行時間對任務進行排序; 而且該命令的很多特性都可以通過互動式命令或者在個人定製文件中進行設定. top - 01:06:48 up 1:22, 1 user, lo ...


鏈接:

 

top:命令提供了實時的對系統處理器的狀態監視.它將顯示系統中CPU最“敏感”的任務列表.

該命令可以按CPU使用.記憶體使用和執行時間對任務進行排序;

而且該命令的很多特性都可以通過互動式命令或者在個人定製文件中進行設定. 

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硬中斷(Hardware IRQ)占用CPU的百分比

0.0% si  軟中斷(Software Interrupts)占用CPU的百分比

 

最後兩行為記憶體信息。內容如下:

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 鍵可以選擇顯示的內容。按 f 鍵之後會顯示列的列表,按 a-z  即可顯示或隱藏對應的列,最後按回車鍵確定。

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

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

 

 

free命令用來顯示記憶體的使用情況

 

b.格式

 

  free [-b -k -m] [-o] [-s delay] [-t] [-V]

 

  c.主要參數

 

  -b -k -m:分別以位元組(KB、MB)為單位顯示記憶體使用情況。

 

  -s delay:顯示每隔多少秒數來顯示一次記憶體使用情況。

 

  -t:顯示記憶體總和列。

 

  -o:不顯示緩衝區調節列。 

 

使用這個命令後終端會連續不斷地報告記憶體使用情況(以位元組為單位),每5秒更新一次

#free -b -s5 

 

             total       used       free     shared    buffers     cached

Mem:       3266180    3250004      16176          0     110652    2668236

-/+ buffers/cache:     471116    2795064

Swap:      2048276      80160    1968116

 

total:總計物理記憶體的大小。

used:已使用多大。

free:可用有多少。

Shared:多個進程共用的記憶體總額。

Buffers/cached:磁碟緩存的大小。

 

第三行(-/+ buffers/cached):

used:已使用多大。

free:可用有多少。

第四行就不多解釋了。

區別:第二行(mem)的used/free與第三行(-/+ buffers/cache) used/free的區別。 這兩個的區別在於使用的角度來看,

第一行是從OS的角度來看,因為對於OS,buffers/cached 都是屬於被使用,所以他的可用記憶體是16176KB,已用記憶體是3250004KB,其中包括,內核(OS)使用+Application(X, oracle,etc)使用的+buffers+cached.

第三行所指的是從應用程式角度來看,對於應用程式來說,buffers/cached 是等於可用的,因為buffer/cached是為了提高文件讀取的性能,當應用程式需在用到記憶體的時候,buffer/cached會很快地被回收。

所以從應用程式的角度來說,可用記憶體=系統free memory+buffers+cached。

如上例:

2795064=16176+110652+2668236

 

接下來解釋什麼時候記憶體會被交換,以及按什麼方交換。 當可用記憶體少於額定值的時候,就會開會進行交換。

 

占用記憶體的測量

 

測量一個進程占用了多少記憶體,linux為我們提供了一個很方便的方法,/proc目錄為我們提供了所有的信息,實際上top等工具也通過這裡來獲取相應的信息。

 

/proc/meminfo 機器的記憶體使用信息

 

/proc/pid/maps pid為進程號,顯示當前進程所占用的虛擬地址。

 

/proc/pid/statm 進程所占用的記憶體


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 首先要安裝VirtualBox的增強版功能(VBoxGuestAdditions) 在 設備 >安裝增強版功能 >運行,重啟電腦。 1、Linux本地的共用文件夾建立 mkdir /mnt/localShare 2、/etc/下的fstab 修改添加 win_share /mnt/localShar ...
  • 參考s3c2410fb.c總結出框架 1.代碼分析 1.1 入口函數 註冊一個platform_driver結構體,如果存在同名的設備dev時,將調用probe函數。 搜索s3c2410-lcd可得下麵的s3c_device_lcd結構體 1.2 probe函數(只列出關鍵性代碼) 由此可知,其主要 ...
  • 一、 下載mysql5.7 http://mirrors.sohu.com/mysql/MySQL-5.7/ Linux下載: 輸入命令:wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.17-linux-glibc2.5-x86_64.t ...
  • 我們平時在做web開發運行web伺服器或運行某個應用時會報錯,提示該應用的埠號已被占用,我們可以用以下的方法解決。 解決方法一:重新為應用配置埠。 解決方法二:找到占用埠的應用並關閉該應用釋放占用的埠: 1、win+r運行cmd或在開菜單的運行中運行 2、運行命令 netstat -aon| ...
  • 系統window8.1 1、安裝IIS組件:點開始菜單—選擇控制面板——程式——打開或關閉WINDOWS功能——展開Internet信息服務,勾選FTP伺服器(包括FTP服務和FTP擴展性),點確定。 由於我的電腦已將安裝了IIS服務所以找不到了,不知道你電腦有沒有安裝可以在 控制面板\所有控制面板 ...
  • 運行級別 說明 0 系統關機狀態 1 單用戶工作狀態,用於root對系統進行維護,此時不予許其他用戶使用主機。(類似於windows 的安全模式) 2 多用戶狀態(沒有NFS) 3 多用戶狀態(有NFS),主機做為伺服器常在該模式下工作 4 系統未定義 5 多用戶狀態,並且在系統啟動後運行xwind ...
  • 我這裡要講的並不是IPC中的消息隊列,我要講的是在進程內部實現自定義的消息隊列,讓各個線程的消息來推動整個進程的運動。進程間的消息隊列用於進程與進程之間的通信,而我將要實現的進程內的消息隊列是用於有序妥當處理來自於各個線程請求,避免一窩蜂的請求而導致消息的異常丟失。想想socket編程里的liste ...
  • Linux系統下給非root用戶添加sudo許可權 有時,在linux系統中非root用戶運行sudo命令,會提示類似信息: xxx is not in the sudoers file. This incident will be reported. 這裡,xxx是當前用戶名,該用戶無法執行sudo ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...