Linux 常用性能工具簡介.

来源:http://www.cnblogs.com/jmcui/archive/2017/08/30/7452547.html
-Advertisement-
Play Games

一、wget 文件下載 使用wget下載單個文件:wget URL 下載並以不同的文件名保存:wget -O wordpress.zip URL wget限速下載:wget --limit-rate=300k URL 使用wget斷點續傳:wget -c URL 使用wget後臺下載:wget -b ...


一、wget 文件下載

使用wget下載單個文件:wget URL 下載並以不同的文件名保存:wget -O wordpress.zip URL wget限速下載:wget --limit-rate=300k URL 使用wget斷點續傳:wget -c URL 使用wget後臺下載:wget -b URL (查看下載進度:tail -f wget-log) 測試下載鏈接:wget --spider URL 下載指定格式文件:wget -r -A.pdf URL FTP下載:wget --ftp-user=USERNAME --ftp-password=PASSWORD URL

二、scp 跨機遠程拷貝

從遠處複製文件到本地目錄:$scp [email protected]:/opt/soft/demo.tar /opt/soft/ 從遠處複製到本地:$scp -r [email protected]:/opt/soft/test /opt/soft/ 上傳本地文件到遠程機器指定目錄:$scp /opt/soft/demo.tar [email protected]:/opt/soft/scptest 上傳本地目錄到遠程機器指定目錄:$scp -r /opt/soft/test [email protected]:/opt/soft/scptest

三、sar

    sar是System Activity Reporter(系統活動情況報告)的縮寫。sar工具將對系統當前的狀態進行取樣,然後通過計算數據和比例來表達系統的當前運行狀態。它的特點是可以連續對系統取樣,獲得大量的取樣數據;取樣數據和分析的結果都可以存入文件,所需的負載很小。sar是目前Linux上最為全面的系統性能分析工具之一,可以從14個大方面對系統的活動進行報告,包括文件的讀寫情況、系統調用的使用情況、串口、CPU效率、記憶體使用狀況、進程活動及IPC有關的活動等,使用也是較為複雜。 查看CPU使用率: sar -u 1 2 (後面兩個參數表示監控的頻率,比如例子中的1和2,表示每秒採樣一次,總共採樣兩次)
  • %user 用戶模式下消耗的CPU時間的比例;
  • %nice 通過nice改變了進程調度優先順序的進程,在用戶模式下消耗的CPU時間的比例
  • %system 系統模式下消耗的CPU時間的比例;
  • %iowait CPU等待磁碟I/O導致空閑狀態消耗的時間比例;
  • %steal 利用Xen等操作系統虛擬化技術,等待其它虛擬CPU計算占用的時間比例;
  • %idle CPU空閑時間比例;
查看CPU平均負載: sar -q 1 2
  • runq-sz:運行隊列的長度(等待運行的進程數)
  • plist-sz:進程列表中進程(processes)和線程(threads)的數量
  • ldavg-1:最後1分鐘的系統平均負載
  • ldavg-5:過去5分鐘的系統平均負載
  • ldavg-15:過去15分鐘的系統平均負載
查詢記憶體: sar -r 1 2
  • kbmemfree:這個值和free命令中的free值基本一致,所以它不包括buffer和cache的空間.
  • kbmemused:這個值和free命令中的used值基本一致,所以它包括buffer和cache的空間.
  • %memused:物理記憶體使用率,這個值是kbmemused和記憶體總量(不包括swap)的一個百分比.
  • kbbuffers和kbcached:這兩個值就是free命令中的buffer和cache.
  • kbcommit:保證當前系統所需要的記憶體,即為了確保不溢出而需要的記憶體(RAM+swap).
  • %commit:這個值是kbcommit與記憶體總量(包括swap)的一個百分比.
查詢頁面交換:sar -W 1 3
  • pswpin/s:每秒系統換入的交換頁面(swap page)數量
  • pswpout/s:每秒系統換出的交換頁面(swap page)數量

四、free

free工具用來查詢系統可用記憶體,顯示當前系統未使用和已使用的記憶體數目,還可以顯示被內核使用的記憶體緩存區。
  • total:記憶體總數
  • used:已經使用的記憶體數
  • free:空閑的記憶體數
  • shared:當前已經廢棄不用
  • buffers Buffer:緩存記憶體數
程式實實在在吃掉的記憶體數:Mem中的used - buff/cache 可以挪用的記憶體總數:Mem中的free + buff/cache   swap:也就是我們通常所說的虛擬記憶體。當記憶體使用到一定值的時候,會開始進行交換(怎麼查看額定值 cat /proc/meminfo)   page cache 和 buffer cache的區別?     簡單來說,page cache用來緩存文件數據,buffer cache用來緩存磁碟數據。在有文件系統的情況下,對文件操作,那麼數據會緩存到page cache。如果直接採用dd等工具對磁碟進行讀寫,那麼數據會緩存到buffer cache。   free -s 10  #周期性的查詢記憶體使用情況,每10s 執行一次命令 

五、iostat

    被用於監視系統輸入輸出設備和CPU使用情況,它的特點是彙報磁碟活動統計情況,同時也會彙報出CPU的使用情況。

註:如果%iowait的值過高,表示硬碟存在I/O瓶頸。 %idle值高,表示CPU較空閑。如果%idle值高但系統響應慢時,有可能是CPU等待分配記憶體,此時應加大記憶體容量。%idle值如果持續低於10,那麼系統的CPU處理能力相對較低,表明系統中最需要解決的資源是CPU。
  • tps:該設備每秒的傳輸次數;
  • kB_read/s:每秒從設備(drive expressed)讀取的數據量;
  • kB_wrtn/s:每秒向設備(drive expressed)寫入的數據量;
  • kB_read:讀取的總數據量;kB_wrtn:寫入的總數量數據量;

六、vmstat

顯示虛擬記憶體狀態,但是他可以報告關於進程、記憶體、I/O等系統運行狀態。

Procs(進程)
    r: 運行隊列中進程數量,這個值也可以判斷是否需要增加CPU。(長期大於1)
    b: 等待IO的進程數量。

Memory(記憶體)
    swpd: 使用虛擬記憶體大小,如果swpd的值不為0,但是SI,SO的值長期為0,這種情況不會影響系統性能。
    free: 空閑物理記憶體大小。
    buff: 用作緩衝的記憶體大小。
    cache: 用作緩存的記憶體大小,如果cache的值大的時候,說明cache處的文件數多,如果頻繁訪問到的文件都能被cache處,那麼磁碟的讀IO bi會非常小。

Swap
    si: 每秒從交換區寫到記憶體的大小,由磁碟調入記憶體。
    so: 每秒寫入交換區的記憶體大小,由記憶體調入磁碟。
    註意:記憶體夠用的時候,這2個值都是0,如果這2個值長期大於0時,系統性能會受到影響,磁碟IO和CPU資源都會被消耗。有些朋友看到空閑記憶體(free)很少的或接近於0時,就認為記憶體不夠用了,不能光看這一點,還要結合si和so,如果free很少,但是si和so也很少(大多時候是0),那麼不用擔心,系統性能這時不會受到影響的。

IO(現在的Linux版本塊的大小為1kb)
    bi: 每秒讀取的塊數
    bo: 每秒寫入的塊數
    註意:隨機磁碟讀寫的時候,這2個值越大(如超出1024k),能看到CPU在IO等待的值也會越大。

system(系統)
    in: 每秒中斷數,包括時鐘中斷。
    cs: 每秒上下文切換數。
    註意:上面2個值越大,會看到由內核消耗的CPU時間會越大。

CPU(以百分比表示)
    us: 用戶進程執行時間百分比(user time)
    us的值比較高時,說明用戶進程消耗的CPU時間多,但是如果長期超50%的使用,那麼我們就該考慮優化程式演算法或者進行加速。
    sy: 內核系統進程執行時間百分比(system time)
    sy的值高時,說明系統內核消耗的CPU資源多,這並不是良性表現,我們應該檢查原因。
    wa: IO等待時間百分比
    wa的值高時,說明IO等待比較嚴重,這可能由於磁碟大量作隨機訪問造成,也有可能磁碟出現瓶頸(塊操作)。

    id: 空閑時間百分比

七、 top

可以實時動態地查看系統的整體運行情況,是一個綜合了多方信息監測系統性能和運行信息的實用工具,是Linux下的任務管理器。通過top命令所提供的互動式界面,用熱鍵可以管理。熱鍵如下:

  • q:退出top命令
  • <Space>:立即刷新
  • s:設置刷新時間間隔
  • c:顯示命令完全模式
  • t::顯示或隱藏進程和CPU狀態信息
  • m:顯示或隱藏記憶體狀態信息
  • l:顯示或隱藏uptime信息
  • f:增加或減少進程顯示標誌
  • S:累計模式,會把已完成或退出的子進程占用的CPU時間累計到父進程的MITE+
  • P:按%CPU使用率排行
  • T:按MITE+排行
  • M:按%MEM排行
  • u:指定顯示用戶進程
  • r:修改進程renice值
  • kkill:進程
  • i:只顯示正在運行的進程
  • W:保存對top的設置到文件^/.toprc,下次啟動將自動調用toprc文件的設置。
  • h:幫助命令。
  • q:退出

註:強調一下,使用頻率最高的是P、T、M,因為通常使用top,我們就想看看是哪些進程最耗cpu資源、占用的記憶體最多; 註:通過”shift + >”或”shift + <”可以向右或左改變排序列 如果只需要查看記憶體:可用free命令。只查看uptime信息(第一行),可用uptime命令;

 

第一行

    • 11:57:12 : 系統當前時間
    • , 2:45 : 系統開機到現在經過了多少時間
    • 3 users : 當前3用戶線上
    • load average: 0.19, 0.17, 0.14: 系統1分鐘、5分鐘、15分鐘的CPU負載信息

第二行

    • Tasks:任務;
    • 205 total:很好理解,就是當前有205個任務,也就是205個進程。
    • 2 running:2個進程正在運行
    • 203 sleeping:203個進程睡眠
    • 0 stopped:停止的進程數
    • 0 zombie:僵死的進程數

第三行

    • Cpu(s):表示這一行顯示CPU總體信息
    • 9.1%us:用戶態進程占用CPU時間百分比,不包含renice值為負的任務占用的CPU的時間。
    • 1.3%sy:內核占用CPU時間百分比
    • 0.0%ni:改變過優先順序的進程占用CPU的百分比
    • 89.6%id:空閑CPU時間百分比
    • 0.0%wa:等待I/O的CPU時間百分比
    • 0.0%hi:CPU硬中斷時間百分比
    • 0.0%si:CPU軟中斷時間百分比
    • 註:這裡顯示數據是所有cpu的平均值,如果想看每一個cpu的處理情況,按1即可;摺疊,再次按1;

第四行

    • Men:記憶體的意思
    • total:物理記憶體總量
    • used:使用的物理記憶體量
    • free:空閑的物理記憶體量
    • buffers:用作內核緩存的物理記憶體量

第五行

    • Swap:交換空間
    • total:交換區總量
    • used:使用的交換區量
    • free:空閑的交換區量
    • cached:緩衝交換區總量

進程信息

    • PID:進程的ID
    • USER:進程所有者
    • PR:進程的優先順序別,越小越優先被執行
    • NInice:值
    • VIRT:進程占用的虛擬記憶體
    • RES:進程占用的物理記憶體
    • SHR:進程使用的共用記憶體
    • S:進程的狀態。S表示休眠,R表示正在運行,Z表示僵死狀態,N表示該進程優先值為負數
    • %CPU:進程占用CPU的使用率
    • %MEM:進程使用的物理記憶體和總記憶體的百分比
    • TIME+:該進程啟動後占用的總的CPU時間,即占用CPU使用時間的累加值。
    • COMMAND:進程啟動命令名稱

八、結語

博主只是一個Linux菜鳥。秉著先博後淵的原則,看到了這些知識,就先記下了,之後具體用到的時候再深究吧。才疏學淺,說的不對的地方,還請大家指正,歡迎討論。另外在Github上發現了一個Linux命令搜索工具,很好用,介紹給大家:https://jaywcjlove.github.io/linux-command/

 


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

-Advertisement-
Play Games
更多相關文章
  • 好煩,又要寫摘要,主要是自己不會說些違心的話,又不願意發惱騷,但還是記錄一下自己目前的狀態和心情吧。生活內容很豐富但實際很平淡,除了親人帶給我一些驚喜外,我嗅不到任何新鮮了。我不知道自己價值多大,被認可的價值有多大,但我不能發惱騷,畢竟我是一個有內涵的程式猿。於是我想,是我不夠全面不夠自信不夠勇敢吧 ...
  • 本文目錄: 1.1 dd命令 1.2 split命令 1.3 csplit命令 在Linux最常用的文件生成和切片工具是dd,它功能比較全面,但無法以行為單位提取文件數據,也無法直接將文件按大小或行數進行均分(除非藉助迴圈)。另兩款數據分割工具split和csplit能夠比較輕鬆地實現這些需求。cs ...
  • uniq是去重,不相鄰的行不算重覆值。 uniq [OPTION]... [INPUT [OUTPUT]] 選項說明: -c:統計出現的次數(count)。 -d:只顯示被計算為重覆的行。 -D:顯示所有被計算為重覆的行。 -u:顯示唯一值,即沒有重覆值的行。 -i:忽略大小寫。 -z:在末尾使用\ ...
  • 本文目錄: 1.1 信號說明 1.2 trap佈置陷阱 1.3 佈置完美陷阱必備知識 家裡有老鼠,快消滅它!哎,又給跑了。老鼠這小東西跑那麼快,想直接直接消滅它還真不那麼容易。於是,老鼠藥、老鼠夾子或老鼠籠就派上用場了,它們都是陷阱,放在那靜靜地等待著老鼠的光顧。 在shell中,也可以捉"老鼠", ...
  • Linux Shell常用shell命令 一、文件、目錄操作命令 1、ls命令 功能:顯示文件和目錄的信息 ls 以預設方式顯示當前目錄文件列表 ls -a 顯示所有文件包括隱藏文件 ls -l 顯示文件屬性,包括大小,日期,符號連接,是否可讀寫及是否可執行 ls -lh 顯示文件的大小,以容易理解 ...
  • 信號可以理解成一種軟體中斷。他提供了一種非同步處理事件的方式。每個信號都有一個與之對應的信號名,這些信號名都帶有SIG首碼,如:SIGABRT,SIGALARM。頭文件signal.h 中定義了所有的信號名,他們值為正整數常量。事實上,實現將個別信號定義在不同的頭文件中,只不過這些頭文件又被包含在了s ...
  • 一、Linux下文件互傳,scp命令實例 1、Linux下目錄複製:本機->遠程伺服器 2、Linux下目錄複製:遠程伺服器->本機 3、Linux下文件複製:遠程伺服器->本機 二、Windows與Linux互傳,pscp命令實例 (註:方法很多,這裡介紹的是通過pscp命令) 前提:下載pscp ...
  • PS:不是真正的無縫切換,數據需要自己備份、還原。 Linode官方給出了一篇文章:https://www.linode.com/docs/tools-reference/custom-kernels-distros/install-freebsd-on-linode 參照文章來,就沒有問題。 主要 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...