天天看點

番外篇11-linux系統指令與⽹絡、磁盤參數和⽇志監控(7/2未完待續)

文章目錄

    • 1 Linux常⽤⼯具指令
      • 1.1 監控
      • 1.2 測試
      • 1.3 優化
    • 2 基礎指令和⼯具
      • 2.1 grep搜尋字元
      • 2.2 find查找⽂件
      • 2.3 ls顯示⽂件
      • 2.4 wc指令
      • 2.5 uptime機器啟動時間+負載
      • 2.6 ulimit⽤戶資源
      • 2.7 curl http
      • 2.8 scp遠端拷⻉
      • 2.9 dos2unix和unix2dos
      • 2.10 sed
        • 1)簡單模式
        • 2) 替換模式
      • 2.11 awk
        • 1)列印某幾列
        • 2)條件過濾
        • 3)判斷語句
        • 4)BEGIN 定義表頭
        • 5)END 添加結尾符
        • 6)資料計算
        • 7)範例:⽹絡狀态統計

1 Linux常⽤⼯具指令

1.1 監控

常⽤的指令:

  • free
  • ping
  • vmstat(VirtualMeomoryStatistics,虛拟記憶體統計)
  • iostat ⽤于報告中央處理器(CPU)統計資訊和整個系統、擴充卡、tty 裝置、磁盤和 CD-ROM 的輸⼊/輸出統計資訊
  • dstat 顯示了cpu使⽤情況,磁盤io情況,⽹絡發包情況和換⻚情況,輸出是彩⾊的,可讀性較強,相對于vmstat和iostat的輸⼊更加詳細且較為直覺。
  • pidstat 主要⽤于監控全部或指定程序占⽤系統資源的情況,如CPU,記憶體、裝置IO、任務切換、線程

    等。

  • top 指令的彙總區域顯示了五個⽅⾯的系統性能資訊:負載、程序狀态、cpu使⽤率、記憶體使⽤、交換

    分區。

  • iotop LINUX程序實時監控⼯具,界⾯⻛格類似top指令
  • htop 是Linux系統中的⼀個互動的程序檢視器,⼀個⽂本模式的應⽤程式(在控制台或者X終端中),需要ncurses。

    mpstat Report processors related statistics. 報告CPU的統計資訊。

  • netstat ⽤于顯示與IP、TCP、UDP和ICMP協定相關的統計資料,⼀般⽤于檢驗本機各端⼝的⽹絡連接配接情況。
  • ps 顯示目前程序的狀态
  • strace Trace system calls and signals。 跟蹤程式執⾏過程中産⽣的系統調⽤及接收到的信号,幫助分析程式或指令執⾏中遇到的異常情況。
  • ltrace A library call tracer 跟蹤程序調⽤庫函數的情況
  • uptime 能夠列印系統總共運⾏了多⻓時間和系統的平均負載,uptime指令最後輸出的三個數字的含義分别是1分鐘,5分鐘,15分鐘内系統的平均負荷
  • lsof (list open files)是⼀個列出目前系統打開⽂件的⼯具。
  • perf 是Linux kernel⾃帶的系統性能優化⼯具。優勢在于與Linux Kernel的緊密結合,它可以最先應⽤到加⼊Kernel的new feature,⽤于檢視熱點函數,檢視cashe miss的⽐率,從⽽幫助開發者來優化程式性能。
  • tcpdump
  • sar
  • blktrace
    番外篇11-linux系統指令與⽹絡、磁盤參數和⽇志監控(7/2未完待續)

1.2 測試

番外篇11-linux系統指令與⽹絡、磁盤參數和⽇志監控(7/2未完待續)

sysbench 是⼀個子產品化、跨平台、多線程基準測試⼯具,可⽤于以下性能測試:

1.CPU 性能

2. 磁盤 IO 性能

3. 排程程式性能

4. 記憶體配置設定及傳輸速度

5.POSIX 線程性能

5. 資料庫性能( OLTP 基準測試)

Linux CPU使⽤率主要是從以下⼏個次元進⾏統計:

  • %usr:普通程序在⽤戶模下下執⾏的時間;
  • %sys:程序在核心模式下的執⾏時間;
  • %nice:被提⾼優先級的程序在⽤戶模式下的執⾏時間;
  • %idle:空閑時間。
  • %iowait:等待I/O完成的時間。
  • %irp:處理硬中斷請求花費的時間。
  • %soft:處理軟中斷請求花費的時間。
  • %steal:是衡量虛拟機CPU的名額,是指配置設定給本虛拟機的時間⽚被同⼀主控端别的虛拟機占⽤,⼀般%steal值較⾼時,說明主控端的資源使⽤已達到瓶頸;

    ⼀般情況下,CPU⼤部分的時間⽚都是消耗在⽤戶态和核心态上。sys和user間的⽐例是互相影響的,%sys⽐例⾼意味着被測服務頻繁的進⾏⽤戶态和系統态之間的切換,會帶來⼀定的CPU開銷,這樣配置設定處理業務的時間⽚就會較少,造成系統性能的下降。對于IO密集型系統,⽆論是⽹絡IO還是磁盤IO,⼀般都會産⽣⼤量的中斷,從⽽導緻%sys相對升⾼,其中磁盤IO密集型系統,對磁盤的讀寫需要占⽤⼤量的CPU,會導緻%iowait的值⼀定⽐例的升⾼,是以當出現%iowait較⾼時,需排查是否存在⼤量的不合理的⽇志操作,或者頻繁的資料載⼊等情況;

1.3 優化

番外篇11-linux系統指令與⽹絡、磁盤參數和⽇志監控(7/2未完待續)

2 基礎指令和⼯具

2.1 grep搜尋字元

  • grep 指令⽤于在⽂件中執⾏關鍵詞搜尋,并顯示比對的效果。部分常⽤選項
    番外篇11-linux系統指令與⽹絡、磁盤參數和⽇志監控(7/2未完待續)
  • 在指定⽂件查找,查找login關鍵字

    grep login ImUser.cpp

  • 多個⽂件中搜尋

    grep login ImUser.cpp MsgConn.cpp

  • 在多個⽂件搜尋的時候,可以使⽤通配符。在以 cpp結尾的⽂件中,搜尋包含login 的⾏

    grep login *.cpp

  • 遞歸搜尋⽬錄下所有⽂件, 搜尋 msg_server⽬錄下所有⽂件,列印出包含 login的⾏。

    grep login -r msg_server/

  • 反向查找,查找⽂件中,不包含 CImUser 的⾏。

    grep -v CImUser ImUser.cpp

  • 找出⽂件中包含 login的⾏,并列印出⾏号

    grep -n login ImUser.cpp

  • 找出⽂件中包含 login的⾏,列印出⾏号,并顯示前後3⾏

    grep -C 3 -n login ImUser.cpp

  • 找出⽂件中包含 login的⾏,列印出⾏号,并顯示前後3⾏,并忽略⼤⼩寫

    grep -C 3 -i -n login ImUser.cpp

2.2 find查找⽂件

通過⽂件名查找⽂件的所在位置,⽂件名查找⽀持模糊比對

find [指定查找⽬錄] [查找規則] [查找完後執⾏的action]

常⽤的操作:

find . -name FILE_NAME

find . -iname FILE_NAME 忽略⽂件名稱⼤⼩寫

find /etc -maxdepth 1 -name passwd ##查找/etc/下名稱中帶有passwd的⽂件,查找⼀層

find /mnt -size 20K ##查找/mnt⽂件⼤⼩近似20k的⽂件

find /mnt -size +20K ##查找/mnt⽂件⼤⼩⼤于20k的⽂件

find /mnt -size -20K ##查找/mnt⽂件⼤⼩⼩于20k的⽂件

find /etc -maxdepth 2 -mindepth 2 -name .conf ##查找/etc/下名稱中帶有.conf的⽂件,且隻查找第⼆層

find /mnt -type d ##按type查找/mnt中⽬錄

find /mnt -type f ##按type查找/mnt中⽂件

find /mnt -cmin 10 ##查找/mnt中⼗分鐘左右修改的

find /mnt -cmin +10 ##查找/mnt中⼗分鐘以上修改的

find /mnt -cmin -10 ##查找/mnt中⼗分鐘以内修改的

find /mnt -ctime 10 ##查找/mnt中⼗天左右修改的

find /mnt -ctime +10 ##查找/mnt中⼗天以上修改的

find /mnt -ctime -10 ##查找/mnt中⼗天以内修改的

2.3 ls顯示⽂件

-t 可以檢視最新修改的時間

-l 每⾏顯示⼀個條⽬

-h 可以結合顯示⽂件的GB,MB等(human);

-R 遞歸顯示

-n 顯示組id和gid

練習:

ls -lt 按最新修改的時間排序,新修改的在前⾯顯示。

ls -ltR 按最新修改的時間排序,新修改的在前⾯顯示,并顯示⼦⽬錄的⽂件資訊

ls -lh 以機關顯示⽂件⼤⼩

2.4 wc指令

  • wc指令⽤于計算字數。 利⽤wc指令我們可以計算⽂件的Byte數、字數、或是列數,若不指定⽂件名稱、或是所給予的⽂件名為"-",則wc指令會從标準輸⼊裝置讀取資料
  • 文法

    wc [-clw][–help][–version][⽂件…]

  • 參數:

    -c或–bytes或–chars 隻顯示Bytes數。

    -l或–lines 隻顯示⾏數。

    -w或–words 隻顯示字數。

    –help 線上幫助。

    –version 顯示版本資訊。

  • 練習:

    wc testfile # testfile⽂件的統計資訊

    7 92 607 testfile # testfile⽂件的⾏數為7、單詞數92、位元組數607

    wc -l testfile

2.5 uptime機器啟動時間+負載

  • 檢視機器的啟動時間、登入⽤戶、平均負載等情況,通常⽤于線上上應急或者技術攻關中,确定作業系統的重新開機時間

[[email protected]_0_3_centos src]# uptime

13:01:52 up 46 days, 22:03, 4 users, load average: 0.13, 0.08, 0.05

從上⾯的輸出可以看到如下資訊

  • 目前時間: 13:01:52
  • 系統已經運⾏的時間:43天22⼩時3分鐘。
  • 前線上⽤戶:4個⽤戶,是總連接配接數量,不是不同⽤戶數量(開⼀個終端連接配接就算⼀個⽤戶)。
  • 系統平均負載:0.13 , 0.08, 0.05,為最近1分鐘、5分鐘、15分鐘的系統負載情況。

系統的平均負載是指在特定的時間間隔内隊列中運⾏的平均程序數。如果⼀個程序滿⾜以條件,它就會位

于運⾏隊列中。

  • 它沒有在等待I/O操作的結果。
  • 它沒有主動進⼊等待狀态(也就是沒有調⽤’wait’相關的系統API )
  • 沒有被停⽌(例如:等待終⽌)。

如果每個CPU核心的目前活動程序數不⼤于3的話,那麼系統的性能還算可以⽀持。

如果每個CPU核心的任務數⼤于5,那麼這台機器的性能有嚴重問題。

如果你的linux主機是1個雙核CPU的話,當Load Average 為6的時候說明機器已經被充分使⽤了。

負載說明(現針對單核情況,不是單核時則乘以核數):

load<1:沒有等待

load==1:系統已⽆額外的資源跑更多的程序了

load>1:程序都堵着等待資源

注意:

load < 0.7時:系統很閑,要考慮多部署⼀些服務

0.7 < load < 1時:系統狀态不錯

load == 1時:系統⻢上要處理不多來了,趕緊找⼀下原因

load > 5時:系統已經⾮常繁忙了

不同load值說明的問題    

    1)1分鐘 load >5,5分鐘 load < 3,15分鐘 load <1

       短期内繁忙,中⻓期空閑,初步判斷是⼀個抖動或者是擁塞前兆

    2)1分鐘 load >5,5分鐘 load >3,15分鐘 load <1

      短期内繁忙,中期内緊張,很可能是⼀個擁塞的開始

    3)1分鐘 load >5,5分鐘 load >5,15分鐘 load >5

      短中⻓期都繁忙,系統正在擁塞

    4)1分鐘 load <1,5分鐘Load>3,15分鐘 load >5

      短期内空閑,中⻓期繁忙,不⽤緊張,系統擁塞正在好轉

補充:

檢視cpu資訊:cat /proc/cpuinfo

直接擷取cpu核數:grep ‘model name’ /proc/cpuinfo | wc -l

2.6 ulimit⽤戶資源

  • Linux系統對每個登入的⽤戶都限制其最⼤程序數和打開的最⼤⽂件句柄數。為了提⾼性能,可以根據硬體資源的具體情況設定各個⽤戶的最⼤程序數和打開的最⼤⽂件句柄數。可以⽤ulimit -a來顯示目前的各種系統對⽤戶使⽤資源的限制:
番外篇11-linux系統指令與⽹絡、磁盤參數和⽇志監控(7/2未完待續)
番外篇11-linux系統指令與⽹絡、磁盤參數和⽇志監控(7/2未完待續)

2.7 curl http

  • 由于目前的線上服務較多地使⽤了RESTful⻛格的API,是以內建測試就需要進⾏HTTP調⽤,檢視傳回的結果是否符合預期,curl指令當然是⾸選的測試⽅法。
  • 使⽤⽅式:

    curl -i “http://www.sina.com” # 列印請求響應頭資訊

    curl -I “http://www.sina.com” # 僅傳回http頭

    curl -v “http://www.sina.com” # 列印更多的調試資訊

    curl -verbose “http://www.sina.com” # 列印更多的調試資訊

    curl -d ‘abc=def’ “http://www.sina.com” # 使⽤post⽅法送出http請求

    curl -sw ‘%{http_code}’ “http://www.sina.com” # 列印http響應碼

2.8 scp遠端拷⻉

  • secure copy的縮寫, scp是linux系統下基于ssh登陸進⾏安全的遠端⽂件拷⻉指令。
  • scp指令是Linux系統中功能強⼤的⽂件傳輸指令,可以實作從本地到遠端,以及從遠端到本地的雙向⽂件傳輸,⽤起來⾮常⽅便,常⽤來線上上定位問題時将線⼘的⼀些⽂件下載下傳到本地進⾏詳查,或者将本地的修改上傳到伺服器上
  • 使⽤⽅式:

    sudo apt-get install openssh-server

    scp [email protected]:/home/liaoqingfu/test.txt . //下載下傳122.152.222.180的⽂件

    scp mi9.aac [email protected]:/home/liaoqingfu/ //上傳⽂件到122.152.222.180

    scp -r [email protected]:/home/liaoqingfu/test . //下載下傳test整個⽬錄到本地

    scp -r test [email protected]:/home/liaoqingfu/ //上傳本地test整個⽬錄到 122.152.222.180

2.9 dos2unix和unix2dos

  • ⽤于轉換Windows和UNIX的換⾏符,通常在Windows系統h開發的腳本和配置,UNIX系統下都需要轉換。
  • 使⽤⽅式:

    dos2unix test.txt

    unix2dos test.txt

  • #轉換整個⽬錄

    find . -type f -exec dos2unix {} ;

    find ./ -type f此指令是顯示目前⽬錄下所有的⽂件

2.10 sed

  • 指令格式1:sed ‘s/原字元串/新字元串/’ ⽂件
  • 指令格式2:sed ‘s/原字元串/新字元串/g’ ⽂件

    這兩種指令格式的差別在于是否有個“g”。沒有“g”表示隻替換第⼀個比對到的字元串,有“g”表示替換所有能比對到的字元串,“g”可以認為是“global”(全局的)的縮寫,沒有“全局的”結尾就不要替換全部。

  • sed指令是⽤來批量修改⽂本内容的,⽐如批量替換配置中的某個ip。

    sed指令在處理時,會先讀取⼀⾏,把目前處理的⾏存儲在臨時緩沖區中,處理完緩沖區中的内容後,列印到螢幕上。然後再讀⼊下⼀⾏,執⾏下⼀個循環。不斷的重複,直到⽂件末尾。

1)簡單模式

番外篇11-linux系統指令與⽹絡、磁盤參數和⽇志監控(7/2未完待續)
  • ⼀個簡單的sed指令包含三個主要部分: 參數 、 範圍 、 操作 。要操作的⽂件,可以直接挂在指令⾏的最後。
  • 參數

1.-n 這個參數是 --quiet 或者 --silent 的意思。表明忽略執⾏過程的輸出,隻輸出我們的結果即可。

2.還有另外⼀個參數 : -i 。使⽤此參數後,所有改動将在原⽂件上執⾏。你的輸出将覆寫原⽂件。⾮常危險,⼀定要注意

  • 範圍

    2,5 表示找到⽂件中,2,3,4,5⾏的内容。

    番外篇11-linux系統指令與⽹絡、磁盤參數和⽇志監控(7/2未完待續)
  • 操作
    番外篇11-linux系統指令與⽹絡、磁盤參數和⽇志監控(7/2未完待續)
    番外篇11-linux系統指令與⽹絡、磁盤參數和⽇志監控(7/2未完待續)

2) 替換模式

  • 以上是 sed 指令的常⽤比對模式,但它還有⼀個強⼤的替換模式,意思就是查找替換其中的某些值,并輸出結果。使⽤替換模式很少使⽤ -n 參數。
    番外篇11-linux系統指令與⽹絡、磁盤參數和⽇志監控(7/2未完待續)
  • 範圍
    番外篇11-linux系統指令與⽹絡、磁盤參數和⽇志監控(7/2未完待續)
  • 指令

這⾥的指令是指s。也就是substitute的意思。

substitute

n. 代替者; 代替物; 代用品; 替補(運動員);

  • 查找比對
    番外篇11-linux系統指令與⽹絡、磁盤參數和⽇志監控(7/2未完待續)
  • 替換
    番外篇11-linux系統指令與⽹絡、磁盤參數和⽇志監控(7/2未完待續)
  • flag 參數
    番外篇11-linux系統指令與⽹絡、磁盤參數和⽇志監控(7/2未完待續)
    sed使用終極教學

^M 就是\r

2.11 awk

  • awk 同 sed 指令類似,隻不過 sed 擅⻓取⾏, awk 指令擅⻓取列。
  • 原理:⼀般是周遊⼀個⽂件中的每⼀⾏,然後分别對⽂件的每⼀⾏進⾏處理
  • 用法:
    番外篇11-linux系統指令與⽹絡、磁盤參數和⽇志監控(7/2未完待續)
    番外篇11-linux系統指令與⽹絡、磁盤參數和⽇志監控(7/2未完待續)

1)列印某幾列

番外篇11-linux系統指令與⽹絡、磁盤參數和⽇志監控(7/2未完待續)

2)條件過濾

番外篇11-linux系統指令與⽹絡、磁盤參數和⽇志監控(7/2未完待續)

3)判斷語句

番外篇11-linux系統指令與⽹絡、磁盤參數和⽇志監控(7/2未完待續)

4)BEGIN 定義表頭

番外篇11-linux系統指令與⽹絡、磁盤參數和⽇志監控(7/2未完待續)

5)END 添加結尾符

番外篇11-linux系統指令與⽹絡、磁盤參數和⽇志監控(7/2未完待續)

6)資料計算

番外篇11-linux系統指令與⽹絡、磁盤參數和⽇志監控(7/2未完待續)

7)範例:⽹絡狀态統計

  • 本⼩節,采⽤awk統計netstat指令的⼀些⽹絡狀态,來看⼀下awk語⾔的基本要素。netstat的輸出類似于:
    番外篇11-linux系統指令與⽹絡、磁盤參數和⽇志監控(7/2未完待續)
    番外篇11-linux系統指令與⽹絡、磁盤參數和⽇志監控(7/2未完待續)
    番外篇11-linux系統指令與⽹絡、磁盤參數和⽇志監控(7/2未完待續)
    番外篇11-linux系統指令與⽹絡、磁盤參數和⽇志監控(7/2未完待續)
    番外篇11-linux系統指令與⽹絡、磁盤參數和⽇志監控(7/2未完待續)
    awk終極筆記

繼續閱讀