Linux常用的九個(gè)高級命令

1.1 top:

top命令是Linux下常用的性能分析工具抡笼,能夠?qū)崟r(shí)顯示系統(tǒng)中各個(gè)進(jìn)程的資源占用狀況

  1. top命令提供了實(shí)時(shí)的對系統(tǒng)處理器的狀態(tài)監(jiān)視.它將顯示系統(tǒng)中CPU最“敏感”的任務(wù)列表.該命令可以按CPU使用.內(nèi)存使用和執(zhí)行時(shí)間對任務(wù)進(jìn)行排序夹囚;而且該命令的很多特性都可以通過交互式命令或者在個(gè)人定制文件中進(jìn)行設(shè)定.

  2. 命令與顯示結(jié)果

    [itshare@hadoop201 ~]$ top
    top - 08:04:45 up 14 min,  2 users,  load average: 1.33, 0.37, 0.16
    Tasks: 160 total,   1 running, 159 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  0.1 us,  0.1 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem :  3861304 total,  2006184 free,  1452708 used,   402412 buff/cache
    KiB Swap:  4063228 total,  4063228 free,        0 used.  2179892 avail Mem 
    
       PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                        
      2744 itshare   20   0 2880872 298780  23396 S   1.7  7.7   0:36.89 java                                                                                                                           
      2371 itshare   20   0 2822356 228376  22624 S   0.7  5.9   0:17.38 java                                                                                                                           
      1138 root      20   0  305504   6564   5176 S   0.3  0.2   0:01.10 vmtoolsd                                                                                                                       
      1418 root      20   0  218552   4080   3240 S   0.3  0.1   0:00.22 rsyslogd                                                                                                                       
      1526 mysql     20   0 1122304 190276   6672 S   0.3  4.9   0:02.53 mysqld                                                                                                                         
      2234 itshare   20   0 2841872 314700  22636 S   0.3  8.2   0:16.27 java                                                                                                                           
      2935 itshare   20   0 2827640 315028  22756 S   0.3  8.2   0:24.83 java  
    
  1. 顯示結(jié)果說明

    1. top

      1. 08:04:45 當(dāng)前系統(tǒng)時(shí)間
      2. up 14 min 系統(tǒng)運(yùn)行的時(shí)間院刁,格式:時(shí):分包蓝, 剛啟動(dòng)只有分
      3. 2 user 當(dāng)前登陸用戶數(shù)
      4. load average: 1.33, 0.37, 0.16: 系統(tǒng)負(fù)載伪窖,即任務(wù)隊(duì)列的平均長度嘱函。三個(gè)數(shù)值分別為 1分鐘、5分鐘城榛、15分鐘前到現(xiàn)在的平均值。
    2. Tasks: 161 total, 1 running, 160 sleeping, 0 stopped, 0 zombie

      1. total 進(jìn)程總數(shù)
      2. running 正在運(yùn)行的進(jìn)程數(shù)
      3. sleeping 睡眠的進(jìn)程數(shù)
      4. stopped 停止的進(jìn)程數(shù)
      5. zombie 僵尸進(jìn)程數(shù)
    3. %Cpu(s):

      1. 0.1 us 用戶空間占用CPU百分比
      2. 0.0 sy 內(nèi)核空間占用CPU百分比
      3. 0.0 ni 用戶進(jìn)程空間內(nèi)改變過優(yōu)先級的進(jìn)程占用CPU百分比
      4. 99.9 id 空閑CPU百分比
      5. 0.0 wa 等待輸入輸出的CPU時(shí)間百分比
      6. 0.0 hi 硬件CPU中斷占用百分比
      7. 0.0 si 軟中斷占用百分比
      8. 0.0 st 虛擬機(jī)占用百分比
    4. KiB Mem :

      1. 3861304 total 物理內(nèi)存總量
      2. 1976556 free, 空閑內(nèi)存總量
      3. 1485068 used 使用的物理內(nèi)存總量
      4. 399680 buff/cache 用作內(nèi)核緩存的內(nèi)存量
    5. KiB Swap:

      1. 4063228 total 交換區(qū)總量
      2. 4063228 free 空閑交換區(qū)總量
      3. 0 used 使用的交換區(qū)總量
      4. 2179892 avail Mem 緩沖的交換區(qū)總量,內(nèi)存中的內(nèi)容被換出到交換區(qū)态兴,而后又被換入到內(nèi)存狠持,但使用過的交換區(qū)尚未被覆蓋,該數(shù)值即為這些內(nèi)容已存在于內(nèi)存中的交換區(qū)的大小,相應(yīng)的內(nèi)存再次被換出時(shí)可不必再對交換區(qū)寫入
    6. 再下面是動(dòng)態(tài)的進(jìn)程信息列表

      序號  列名    含義
      a    PID     進(jìn)程id
      b    PPID    父進(jìn)程id
      c    RUSER   Real user name
      d    UID     進(jìn)程所有者的用戶id
      e    USER    進(jìn)程所有者的用戶名
      f    GROUP   進(jìn)程所有者的組名
      g    TTY     啟動(dòng)進(jìn)程的終端名瞻润。不是從終端啟動(dòng)的進(jìn)程則顯示為 ?
      h    PR      優(yōu)先級
      i    NI      nice值喘垂。負(fù)值表示高優(yōu)先級,正值表示低優(yōu)先級
      j    P       最后使用的CPU绍撞,僅在多CPU環(huán)境下有意義
      k    %CPU    上次更新到現(xiàn)在的CPU時(shí)間占用百分比
      l    TIME    進(jìn)程使用的CPU時(shí)間總計(jì)正勒,單位秒
      m    TIME+   進(jìn)程使用的CPU時(shí)間總計(jì),單位1/100秒
      n    %MEM    進(jìn)程使用的物理內(nèi)存百分比
      o    VIRT    進(jìn)程使用的虛擬內(nèi)存總量傻铣,單位kb章贞。VIRT=SWAP+RES
      p    SWAP    進(jìn)程使用的虛擬內(nèi)存中,被換出的大小非洲,單位kb鸭限。
      q    RES     進(jìn)程使用的、未被換出的物理內(nèi)存大小两踏,單位kb败京。RES=CODE+DATA
      r    CODE    可執(zhí)行代碼占用的物理內(nèi)存大小,單位kb
      s    DATA    可執(zhí)行代碼以外的部分(數(shù)據(jù)段+棧)占用的物理內(nèi)存大小缆瓣,單位kb
      t    SHR     共享內(nèi)存大小喧枷,單位kb
      u    nFLT    頁面錯(cuò)誤次數(shù)
      v    nDRT    最后一次寫入到現(xiàn)在虹统,被修改過的頁面數(shù)弓坞。
      w    S       進(jìn)程狀態(tài)(D=不可中斷的睡眠狀態(tài),R=運(yùn)行,S=睡眠,T=跟蹤/停止,Z=僵尸進(jìn)程)
      x    COMMAND 命令名/命令行
      y    WCHAN   若該進(jìn)程在睡眠隧甚,則顯示睡眠中的系統(tǒng)函數(shù)名
      z    Flags   任務(wù)標(biāo)志,參考 sched.h
      

      默認(rèn)情況下僅顯示比較重要的 PID渡冻、USER戚扳、PR、NI族吻、VIRT帽借、RES、SHR超歌、S砍艾、%CPU、%MEM巍举、TIME+脆荷、COMMAND 列“妹酰可以通過下面的快捷鍵來更改顯示內(nèi)容蜓谋。

      更改顯示內(nèi)容通過 f 鍵可以選擇顯示的內(nèi)容。按 f 鍵之后會(huì)顯示列的列表炭分,按 a-z 即可顯示或隱藏對應(yīng)的列桃焕,最后按回車鍵確定。
      o 鍵可以改變列的顯示順序捧毛。按小寫的 a-z 可以將相應(yīng)的列向右移動(dòng)观堂,而大寫的 A-Z 可以將相應(yīng)的列向左移動(dòng)。最后按回車鍵確定岖妄。
      按大寫的 FO 鍵型将,然后按 a-z 可以將進(jìn)程按照相應(yīng)的列進(jìn)行排序。而大寫的 R 鍵可以將當(dāng)前的排序倒轉(zhuǎn)荐虐。

  2. 命令的使用

    1. top使用格式

      top [-] [d] [p] [q] [c] [C] [S] [s] [n]
      
      • 選項(xiàng)說明

        選項(xiàng) 含義
        d 指定每兩次屏幕信息刷新之間的時(shí)間間隔七兜。當(dāng)然用戶可以使用s交互命令來改變之。
        p 通過指定監(jiān)控進(jìn)程ID來僅僅監(jiān)控某個(gè)進(jìn)程的狀態(tài)
        q 該選項(xiàng)將使top沒有任何延遲的進(jìn)行刷新福扬。如果調(diào)用程序有超級用戶權(quán)限腕铸,那么top將以盡可能高的優(yōu)先級運(yùn)行。
        S 指定累計(jì)模式
        s 使top命令在安全模式中運(yùn)行铛碑。這將去除交互命令所帶來的潛在危險(xiǎn)狠裹。
        i 使top不顯示任何閑置或者僵死進(jìn)程。
        c 顯示整個(gè)命令行而不只是顯示命令名
  1. 其他實(shí)用命令
    下面介紹在top命令執(zhí)行過程中可以使用的一些交互命令汽烦。從使用角度來看涛菠,熟練的掌握這些命令比掌握選項(xiàng)還重要一些。這些命令都是單字母的,如果在命令行選項(xiàng)中使用了s選項(xiàng)俗冻,則可能其中一些命令會(huì)被屏蔽掉礁叔。

    命令 含義
    Ctrl+L 擦除并且重寫屏幕。
    h或者? 顯示幫助畫面迄薄,給出一些簡短的命令總結(jié)說明琅关。
    k 終止一個(gè)進(jìn)程。系統(tǒng)將提示用戶輸入需要終止的進(jìn)程PID讥蔽,以及需要發(fā)送給該進(jìn)程什么樣的信號涣易。一般的終止進(jìn)程可以使用15信號;如果不能正常結(jié)束那就使用信號9強(qiáng)制結(jié)束該進(jìn)程冶伞。默認(rèn)值是信號15新症。在安全模式中此命令被屏蔽。
    i 忽略閑置和僵死進(jìn)程响禽。這是一個(gè)開關(guān)式命令账劲。
    q 退出程序。
    r 重新安排一個(gè)進(jìn)程的優(yōu)先級別金抡。系統(tǒng)提示用戶輸入需要改變的進(jìn)程PID以及需要設(shè)置的進(jìn)程優(yōu)先級值瀑焦。輸入一個(gè)正值將使優(yōu)先級降低,反之則可以使該進(jìn)程擁有更高的優(yōu)先權(quán)梗肝。默認(rèn)值是10榛瓮。
    S 切換到累計(jì)模式。
    s 改變兩次刷新之間的延遲時(shí)間巫击。系統(tǒng)將提示用戶輸入新的時(shí)間禀晓,單位為s。如果有小數(shù)坝锰,就換算成 ms粹懒。輸入0值則系統(tǒng)將不斷刷新,默認(rèn)值是3s顷级。需要注意的是如果設(shè)置太小的時(shí)間凫乖,很可能會(huì)引起不斷刷新,從而根本來不及看清顯示的情況弓颈,而且系統(tǒng)負(fù)載也會(huì)大大增加帽芽。
    f/F 從當(dāng)前顯示中添加或者刪除項(xiàng)目。
    o/O 改變顯示項(xiàng)目的順序翔冀。
    l 切換顯示平均負(fù)載和啟動(dòng)時(shí)間信息导街。
    m 切換顯示內(nèi)存信息。
    t 切換顯示進(jìn)程和CPU狀態(tài)信息纤子。
    c 切換顯示命令名稱和完整命令行搬瑰。
    M 根據(jù)駐留內(nèi)存大小進(jìn)行排序款票。
    P 根據(jù)CPU使用百分比大小進(jìn)行排序。
    T 根據(jù)時(shí)間/累計(jì)時(shí)間進(jìn)行排序泽论。
    W 將當(dāng)前設(shè)置寫入~/.toprc文件中徽职。這是寫top配置文件的推薦方法。
  1. 常用操作:

    top       //每隔3秒顯式所有進(jìn)程的資源占用情況
    top -d 5  //每隔5秒顯式所有進(jìn)程的資源占用情況
    top -c  //每隔5秒顯式進(jìn)程的資源占用情況佩厚,并顯示進(jìn)程的命令行選項(xiàng)(默認(rèn)只有進(jìn)程名)
    top -p 2744 -p 2371//每隔5秒顯示pid是2744和pid是2371的兩個(gè)進(jìn)程的資源占用情況
    top -d 2 -c -p 2371//每隔2秒顯示pid是12345的進(jìn)程的資源使用情況,并顯式該進(jìn)程啟動(dòng)的命令行選項(xiàng)
    

1.2 ps

  1. 概述: ps命令用來列出系統(tǒng)中當(dāng)前運(yùn)行的那些進(jìn)程说订。ps命令列出的是當(dāng)前那些進(jìn)程的快照抄瓦。

  2. 格式:ps [options] [--help]

  3. ps 的選項(xiàng)非常多, 在此僅列出幾個(gè)常用的選項(xiàng)

    選項(xiàng) 含義
    -A 列出所有的進(jìn)程
    -w 顯示加寬可以顯示較多的資訊
    -au 顯示較詳細(xì)的資訊
    -aux 顯示所有包含其他使用者的行程
    • ps aux 輸出格式

      [itshare@hadoop201 ~]$ ps -aux
      USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
      root          1  0.0  0.1 191428  4380 ?        Ss   07:50   0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
      root          2  0.0  0.0      0     0 ?        S    07:50   0:00 [kthreadd]
      root          4  0.0  0.0      0     0 ?        S<   07:50   0:00 [kworker/0:0H]
      root          6  0.0  0.0      0     0 ?        S    07:50   0:00 [ksoftirqd/0]
      root          7  0.0  0.0      0     0 ?        S    07:50   0:00 [migration/0]xxxxxxxxxx itshare    3228  0.0  0.0 155472  1872 pts/0    R+   09:20   0:00 ps aux[itshare@hadoop201 ~]$ ps -auxUSER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMANDroot          1  0.0  0.1 191428  4380 ?        Ss   07:50   0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22root          2  0.0  0.0      0     0 ?        S    07:50   0:00 [kthreadd]root          4  0.0  0.0      0     0 ?        S<   07:50   0:00 [kworker/0:0H]root          6  0.0  0.0      0     0 ?        S    07:50   0:00 [ksoftirqd/0]root          7  0.0  0.0      0     0 ?        S    07:50   0:00 [migration/0]USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
      
  • 每列含義說明

    USER: 行程擁有者
    PID: pid
    %CPU: 占用的 CPU 使用率
    %MEM: 占用的記憶體使用率
    VSZ: 占用的虛擬記憶體大小
    RSS: 占用的記憶體大小
    TTY: 終端的次要裝置號碼 (minor device number of tty)
    STAT: 該行程的狀態(tài):
        D: 無法中斷的休眠狀態(tài) (通常 IO 的進(jìn)程)
        R: 正在執(zhí)行中
        S: 靜止?fàn)顟B(tài)
        T: 暫停執(zhí)行
        Z: 不存在但暫時(shí)無法消除
        W: 沒有足夠的記憶體分頁可分配
        <: 高優(yōu)先序的行程
        N: 低優(yōu)先序的行程
        L: 有記憶體分頁分配并鎖在記憶體內(nèi) (實(shí)時(shí)系統(tǒng)或捱A I/O)
    START: 行程開始時(shí)間
    TIME: 執(zhí)行的時(shí)間
    COMMAND:所執(zhí)行的指令
    
  1. 常見用法

    1. 根據(jù)進(jìn)程信息查詢

      1. 格式

        ps -ef | grep 進(jìn)程關(guān)鍵字
        
      2. 舉例

        [itshare@hadoop201 ~]$ ps aux|grep mysql
        mysql      1526  0.1  4.9 1122304 190276 ?      Sl   07:50   0:09 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
        itshare    3264  0.0  0.0 112828   980 pts/0    R+   09:33   0:00 grep --color=auto mysql
        
    2. 顯示指定用戶的進(jìn)程

      [itshare@hadoop201 ~]$ ps -u itshare
         PID TTY          TIME CMD
        1976 ?        00:00:01 sshd
        1977 pts/0    00:00:00 bash
        2007 ?        00:00:00 sshd
        2008 pts/1    00:00:00 bash
        2234 ?        00:00:36 java
        2371 ?        00:00:37 java
        2744 ?        00:01:20 java
        2935 ?        00:00:39 java
        3272 pts/0    00:00:00 ps
      
  1. 顯示所有進(jìn)程信息,連同命令行

    UID         PID   PPID  C STIME TTY          TIME CMD
    root          1      0  0 07:50 ?        00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
    root          2      0  0 07:50 ?        00:00:00 [kthreadd]
    root          4      2  0 07:50 ?        00:00:00 [kworker/0:0H]
    root          6      2  0 07:50 ?        00:00:00 [ksoftirqd/0]
    root          7      2  0 07:50 ?        00:00:00 [migration/0]
    ...
    

1.3 iotop

  1. 概述:

    實(shí)時(shí)監(jiān)控磁盤I/O的工具

  2. 安裝

    yum -y install iotop
    
  3. 使用

    1. 查看幫助信息

      [root@hadoop201 itshare]# iotop -h
      Usage: /usr/sbin/iotop [OPTIONS]
      
      DISK READ and DISK WRITE are the block I/O bandwidth used during the sampling
      period. SWAPIN and IO are the percentages of time the thread spent respectively
      while swapping in and waiting on I/O more generally. PRIO is the I/O priority at
      which the thread is running (set using the ionice command).
      
      Controls: left and right arrows to change the sorting column, r to invert the
      sorting order, o to toggle the --only option, p to toggle the --processes
      option, a to toggle the --accumulated option, i to change I/O priority, q to
      quit, any other key to force a refresh.
      
      Options:
        --version             show program's version number and exit
        -h, --help            show this help message and exit
        -o, --only            only show processes or threads actually doing I/O
        -b, --batch           non-interactive mode
        -n NUM, --iter=NUM    number of iterations before ending [infinite]
        -d SEC, --delay=SEC   delay between iterations [1 second]
        -p PID, --pid=PID     processes/threads to monitor [all]
        -u USER, --user=USER  users to monitor [all]
        -P, --processes       only show processes, not all threads
        -a, --accumulated     show accumulated I/O instead of bandwidth
        -k, --kilobytes       use kilobytes instead of a human friendly unit
        -t, --time            add a timestamp on each line (implies --batch)
        -q, --quiet           suppress some lines of header (implies --batch)
      

      選項(xiàng)說明

        --version             顯示程序的版本號并退出
        -h, --help            顯示幫助信息并退出
        -o, --only            只顯示正在進(jìn)行I/O操作的進(jìn)程或線程 
        -b, --batch           非交互模式陶冷,一般用于記錄日志
        -n NUM, --iter=NUM    設(shè)置監(jiān)測的次數(shù)钙姊,默認(rèn)無限。在非交互模式下很有用埂伦。
        -d SEC, --delay=SEC   設(shè)置每次監(jiān)測的間隔煞额,默認(rèn)1秒,接受非整形數(shù)據(jù)
        -p PID, --pid=PID     指定監(jiān)測的進(jìn)程/線程沾谜。
        -u USER, --user=USER  指定監(jiān)測某個(gè)用戶產(chǎn)生的I/O
        -P, --processes       僅顯示進(jìn)程膊毁,默認(rèn)iotop顯示所有線程。
        -a, --accumulated     顯示累積的I/O基跑,而不是帶寬婚温。
        -k, --kilobytes       使用kB單位,而不是對人友好的單位媳否。在非交互模式下栅螟,腳本編程有用。
        -t, --time             加上時(shí)間戳篱竭,非交互非模式力图。
        -q, --quiet           禁止頭幾行,非交互模式掺逼。有三種指定方式吃媒。
      

      按鍵交互

      left和right方向鍵:改變排序÷来  
      r:反向排序晓折。
      o:切換至選項(xiàng)--only。
      p:切換至--processes選項(xiàng)兽泄。
      a:切換至--accumulated選項(xiàng)漓概。
      q:退出。
      i:改變線程的優(yōu)先級病梢。
      
  4. 舉例

    1. 只顯示正在產(chǎn)生I/O的進(jìn)程或線程胃珍。除了傳參梁肿,可以在運(yùn)行過程中按o生效。

      iotop  -o
      
    2. 時(shí)間刷新間隔3秒觅彰,輸出5次

      iotop  -d 3 -n 5
      
  1. 非交互式吩蔑,輸出5次,間隔5秒填抬,輸出到屏幕烛芬,也可輸出到日志文本,用于監(jiān)控某時(shí)間段的io信息

    iotop -botq -n 5 -d 5
    
  1. 非交互式飒责,輸出pid為2744的進(jìn)程信息

     iotop -botq -p 2744
    

1.4 iostat

iostat工具將對系統(tǒng)的磁盤操作活動(dòng)進(jìn)行監(jiān)視赘娄。它的特點(diǎn)是匯報(bào)磁盤活動(dòng)統(tǒng)計(jì)情況,同時(shí)也會(huì)匯報(bào)出CPU使用情況宏蛉。

  1. 安裝

    yum install sysstat
    
  2. 使用

    顯示所有設(shè)備負(fù)載情況

    [root@hadoop201 itshare]# iostat
    Linux 3.10.0-1127.el7.x86_64 (hadoop201)        2021年02月02日  _x86_64_        (8 CPU)
    
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
               0.05    0.00    0.07    0.00    0.00   99.88
    
    Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
    sda               0.80        23.40         7.18     711490     218382
    scd0              0.00         0.03         0.00       1028          0
    dm-0              0.75        22.34         7.11     679395     216294
    dm-1              0.00         0.07         0.00       2204          0
    

    說明:

    cpu屬性值說明:

    %user:CPU處在用戶模式下的時(shí)間百分比遣臼。

    %nice:CPU處在帶NICE值的用戶模式下的時(shí)間百分比。

    %system:CPU處在系統(tǒng)模式下的時(shí)間百分比拾并。

    %iowait:CPU等待輸入輸出完成時(shí)間的百分比揍堰。

    %steal:管理程序維護(hù)另一個(gè)虛擬處理器時(shí),虛擬CPU的無意識等待時(shí)間百分比嗅义。

    %idle:CPU空閑時(shí)間百分比屏歹。

    備注:

    如果%iowait的值過高,表示硬盤存在I/O瓶頸

    如果%idle值高之碗,表示CPU較空閑

    如果%idle值高但系統(tǒng)響應(yīng)慢時(shí)西采,可能是CPU等待分配內(nèi)存,應(yīng)加大內(nèi)存容量继控。

    如果%idle值持續(xù)低于10械馆,表明CPU處理能力相對較低,系統(tǒng)中最需要解決的資源是CPU武通。

    cpu屬性值說明:

    tps:該設(shè)備每秒的傳輸次數(shù)

    kB_read/s:每秒從設(shè)備(drive expressed)讀取的數(shù)據(jù)量霹崎;

    kB_wrtn/s:每秒向設(shè)備(drive expressed)寫入的數(shù)據(jù)量;

    kB_read: 讀取的總數(shù)據(jù)量冶忱;

    kB_wrtn:寫入的總數(shù)量數(shù)據(jù)量尾菇;

  3. 舉例

    定時(shí)顯示所有信息

    # 【每隔2秒刷新顯示,且顯示3次】 iostat 2 3
    

    顯示指定磁盤信息

    iostat -d /dev/sda
    

    顯示tty和Cpu信息

    iostat -t
    

    以M為單位顯示所有信息

    iostat -m
    

    查看設(shè)備使用率(%util)囚枪、響應(yīng)時(shí)間(await)

    # 【-d 顯示磁盤使用情況派诬,-x 顯示詳細(xì)信息】#  iostat -d -x -k 1 1
    

    說明:

    rrqm/s: 每秒進(jìn)行 merge 的讀操作數(shù)目.即 delta(rmerge)/s

    wrqm/s: 每秒進(jìn)行 merge 的寫操作數(shù)目.即 delta(wmerge)/s

    %util: 一秒中有百分之多少的時(shí)間用于 I/O

    如果%util接近100%,說明產(chǎn)生的I/O請求太多链沼,I/O系統(tǒng)已經(jīng)滿負(fù)荷

    idle小于70% IO壓力就較大了默赂,一般讀取速度有較多的wait。

    查看cpu狀態(tài)

    [root@hadoop201 itshare]# iostat -c 1 1
    Linux 3.10.0-1127.el7.x86_64 (hadoop201)        2021年02月02日  _x86_64_        (8 CPU)
    
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
               0.05    0.00    0.07    0.00    0.00   99.88
    

1.5 netstat

Netstat 命令用于顯示各種網(wǎng)絡(luò)相關(guān)信息括勺,如網(wǎng)絡(luò)連接缆八,路由表曲掰,接口狀態(tài) (Interface Statistics),masquerade 連接奈辰,多播成員 (Multicast Memberships) 等等栏妖。

  1. 輸出信息含義

    [root@hadoop201 itshare]# netstat
    Active Internet connections (w/o servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State      
    tcp        0      0 hadoop201:43808         hadoop2:intu-ec-svcdisc TIME_WAIT  
    tcp        0      0 hadoop2:intu-ec-svcdisc hadoop203:46252         ESTABLISHED
    tcp        0      0 hadoop2:intu-ec-svcdisc hadoop202:49768         ESTABLISHED
    tcp        0     96 hadoop201:ssh           192.168.19.1:64945      ESTABLISHED
    tcp        0      0 hadoop201:ssh           192.168.19.1:65078      ESTABLISHED
    tcp        0      0 hadoop201:43456         hadoop2:intu-ec-svcdisc ESTABLISHED
    tcp        0      0 hadoop201:42906         hadoop202:8031          ESTABLISHED
    tcp        0      0 hadoop2:intu-ec-svcdisc hadoop201:43456         ESTABLISHED
    Active UNIX domain sockets (w/o servers)
    Proto RefCnt Flags       Type       State         I-Node   Path
    unix  3      [ ]         DGRAM                    30       /run/systemd/notify
    unix  2      [ ]         DGRAM                    32       /run/systemd/cgroups-agent
    
  1. 執(zhí)行netstat后,其輸出結(jié)果為

    從整體上看奖恰,netstat的輸出結(jié)果可以分為兩個(gè)部分:

    • 一個(gè)是Active Internet connections吊趾,稱為有源TCP連接,其中"Recv-Q"和"Send-Q"指%0A的是接收隊(duì)列和發(fā)送隊(duì)列瑟啃。這些數(shù)字一般都應(yīng)該是0论泛。如果不是則表示軟件包正在隊(duì)列中堆積。這種情況只能在非常少的情況見到翰守。

    • 另一個(gè)是Active UNIX domain sockets,稱為有源Unix域套接口(和網(wǎng)絡(luò)套接字一樣疲酌,但是只能用于本機(jī)通信蜡峰,性能可以提高一倍)。
      Proto顯示連接使用的協(xié)議,RefCnt表示連接到本套接口上的進(jìn)程號,Types顯示套接口的類型,State顯示套接口當(dāng)前的狀態(tài),Path表示連接到套接口的其它進(jìn)程使用的路徑名朗恳。

  2. 常見選項(xiàng)

    -a (all)顯示所有選項(xiàng)湿颅,默認(rèn)不顯示LISTEN相關(guān)
    -t (tcp)僅顯示tcp相關(guān)選項(xiàng)
    -u (udp)僅顯示udp相關(guān)選項(xiàng)
    -n 拒絕顯示別名,能顯示數(shù)字的全部轉(zhuǎn)化成數(shù)字粥诫。
    -l 僅列出有在 Listen (監(jiān)聽) 的服務(wù)狀態(tài)

    -p 顯示建立相關(guān)鏈接的程序名
    -r 顯示路由信息油航,路由表
    -e 顯示擴(kuò)展信息,例如uid等
    -s 按各個(gè)協(xié)議進(jìn)行統(tǒng)計(jì)
    -c 每隔一個(gè)固定時(shí)間怀浆,執(zhí)行該netstat命令谊囚。

    提示:LISTEN和LISTENING的狀態(tài)只有用-a或者-l才能看到

  3. 實(shí)用命令實(shí)例

    1. 列出所有端口 (包括監(jiān)聽和未監(jiān)聽的)

    2. 列出所有端口 netstat -a

      ```
      [root@hadoop201 itshare]# netstat -a|more
      Active Internet connections (servers and established)
      Proto Recv-Q Send-Q Local Address           Foreign Address         State      
      tcp        0      0 0.0.0.0:ampify          0.0.0.0:*               LISTEN     
      tcp        0      0 0.0.0.0:9864            0.0.0.0:*               LISTEN     
      tcp        0      0 0.0.0.0:fs-agent        0.0.0.0:*               LISTEN     
      tcp        0      0 0.0.0.0:9866            0.0.0.0:*               LISTEN     
      tcp        0      0 0.0.0.0:9867            0.0.0.0:*               LISTEN     
      tcp        0      0 localhost:33006         0.0.0.0:*               LISTEN     
      tcp        0      0 0.0.0.0:9870            0.0.0.0:*               LISTEN     
      tcp        0      0 hadoop201:19888         0.0.0.0:*               LISTEN     
      tcp        0      0 0.0.0.0:10033           0.0.0.0:*               LISTEN     
      tcp        0      0 hadoop2:intu-ec-svcdisc 0.0.0.0:*               LISTEN     
      tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN     
      tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN     
      tcp        0      0 0.0.0.0:13562           0.0.0.0:*               LISTEN     
      tcp        0      0 hadoop201:10020         0.0.0.0:*               LISTEN     
      tcp        0      0 0.0.0.0:40807           0.0.0.0:*               LISTEN     
      tcp        0      0 hadoop201:43812         hadoop2:intu-ec-svcdisc TIME_WAIT  
      tcp        0      0 hadoop2:intu-ec-svcdisc hadoop203:46252         ESTABLISHED
      tcp        0      0 hadoop2:intu-ec-svcdisc hadoop202:49768         ESTABLISHED
      tcp        0     96 hadoop201:ssh           192.168.19.1:64945      ESTABLISHED
      tcp        0      0 hadoop201:ssh           192.168.19.1:65078      ESTABLISHED
      tcp        0      0 hadoop201:43456         hadoop2:intu-ec-svcdisc ESTABLISHED
      tcp        0      0 hadoop201:42906         hadoop202:8031          ESTABLISHED
      tcp        0      0 hadoop2:intu-ec-svcdisc hadoop201:43456         ESTABLISHED
      tcp6       0      0 [::]:mysql              [::]:*                  LISTEN     
      tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     
      tcp6       0      0 localhost:smtp          [::]:*                  LISTEN     
      udp        0      0 hadoop201:ntp           0.0.0.0:*                          
      udp        0      0 localhost:ntp           0.0.0.0:*                          
      udp        0      0 0.0.0.0:ntp             0.0.0.0:*                          
      udp6       0      0 hadoop201:ntp           [::]:*                             
      udp6       0      0 localhost:ntp           [::]:*                             
      udp6       0      0 [::]:ntp                [::]:*                             
      Active UNIX domain sockets (servers and established)
      Proto RefCnt Flags       Type       State         I-Node   Path
      unix  2      [ ACC ]     STREAM     LISTENING     16647    /run/systemd/private
      unix  3      [ ]         DGRAM                    30       /run/systemd/notify
      unix  2      [ ]         DGRAM                    32       /run/systemd/cgroups-agent
      unix  2      [ ACC ]     STREAM     LISTENING     25818    private/proxymap
      unix  2      [ ACC ]     SEQPACKET  LISTENING     16678    /run/udev/control
      unix  2      [ ACC ]     STREAM     LISTENING     25821    private/proxywrite
      unix  2      [ ACC ]     STREAM     LISTENING     25824    private/smtp
      unix  2      [ ACC ]     STREAM     LISTENING     25827    private/relay
      unix  2      [ ACC ]     STREAM     LISTENING     16680    /run/lvm/lvmetad.socket
      unix  2      [ ACC ]     STREAM     LISTENING     40       /run/systemd/journal/stdout
      unix  2      [ ACC ]     STREAM     LISTENING     25833    private/error
      unix  2      [ ACC ]     STREAM     LISTENING     25836    private/retry
      unix  5      [ ]         DGRAM                    43       /run/systemd/journal/socket
      unix  2      [ ACC ]     STREAM     LISTENING     25839    private/discard
      unix  2      [ ACC ]     STREAM     LISTENING     25842    private/local
      unix  15     [ ]         DGRAM                    45       /dev/log
      unix  2      [ ACC ]     STREAM     LISTENING     25845    private/virtual
      unix  2      [ ACC ]     STREAM     LISTENING     20792    /var/run/abrt/abrt.socket
      unix  2      [ ]         DGRAM                    16698    /run/systemd/shutdownd
      unix  2      [ ACC ]     STREAM     LISTENING     16707    /run/lvm/lvmpolld.socket
      unix  2      [ ACC ]     STREAM     LISTENING     25854    private/scache
      unix  2      [ ACC ]     STREAM     LISTENING     26922    private/defer
      unix  2      [ ACC ]     STREAM     LISTENING     26925    private/trace
      unix  2      [ ACC ]     STREAM     LISTENING     26902    public/pickup
      unix  2      [ ACC ]     STREAM     LISTENING     26906    public/cleanup
      unix  2      [ ACC ]     STREAM     LISTENING     26931    public/flush
      unix  2      [ ACC ]     STREAM     LISTENING     25830    public/showq
      unix  2      [ ACC ]     STREAM     LISTENING     25848    private/lmtp
      unix  2      [ ACC ]     STREAM     LISTENING     25851    private/anvil
      unix  2      [ ACC ]     STREAM     LISTENING     26909    public/qmgr
      unix  2      [ ACC ]     STREAM     LISTENING     26913    private/tlsmgr
      unix  2      [ ACC ]     STREAM     LISTENING     26916    private/rewrite
      unix  2      [ ACC ]     STREAM     LISTENING     26919    private/bounce
      unix  2      [ ACC ]     STREAM     LISTENING     26928    private/verify
      unix  2      [ ACC ]     STREAM     LISTENING     20696    /run/dbus/system_bus_socket
      unix  2      [ ACC ]     STREAM     LISTENING     25905    /var/lib/mysql/mysql.sock
      unix  2      [ ACC ]     STREAM     LISTENING     15096    /var/run/vmware/guestServicePipe
      unix  3      [ ]         STREAM     CONNECTED     26900    
      unix  3      [ ]         STREAM     CONNECTED     994      
      unix  3      [ ]         STREAM     CONNECTED     26926    
      ```
    
    1. 列出所有 tcp 端口 netstat -at

      [root@hadoop201 itshare]# netstat
      Active Internet connections (w/o servers)
      Proto Recv-Q Send-Q Local Address           Foreign Address         State      
      tcp        0      0 hadoop2:intu-ec-svcdisc hadoop203:46252         ESTABLISHED
      tcp        0      0 hadoop2:intu-ec-svcdisc hadoop202:49768         ESTABLISHED
      tcp        0     96 hadoop201:ssh           192.168.19.1:64945      ESTABLISHED
      tcp        0      0 hadoop201:ssh           192.168.19.1:65078      ESTABLISHED
      tcp        0      0 hadoop2:intu-ec-svcdisc hadoop203:47112         ESTABLISHED
      tcp        0      0 hadoop201:43456         hadoop2:intu-ec-svcdisc ESTABLISHED
      tcp        0      0 hadoop201:42906         hadoop202:8031          ESTABLISHED
      tcp        0      0 hadoop2:intu-ec-svcdisc hadoop201:43456         ESTABLISHED
      
  3. **列出所有 udp 端口 netstat -au**

     ```
     [root@hadoop201 itshare]# netstat -au
     Active Internet connections (servers and established)
     Proto Recv-Q Send-Q Local Address           Foreign Address         State      
     udp        0      0 hadoop201:ntp           0.0.0.0:*                          
     udp        0      0 localhost:ntp           0.0.0.0:*                          
     udp        0      0 0.0.0.0:ntp             0.0.0.0:*                          
     udp6       0      0 hadoop201:ntp           [::]:*                             
     udp6       0      0 localhost:ntp           [::]:*                             
     udp6       0      0 [::]:ntp                [::]:*      
     ```
  1. 列出所有處于監(jiān)聽狀態(tài)的 Sockets

    1. 只顯示監(jiān)聽端口 netstat -l
    2. 只列出所有監(jiān)聽 tcp 端口 netstat -lt
    3. 只列出所有監(jiān)聽 udp 端口 netstat -lu
    4. 只列出所有監(jiān)聽 UNIX 端口 netstat -lx
  2. 顯示每個(gè)協(xié)議的統(tǒng)計(jì)信息

    1. 顯示所有端口的統(tǒng)計(jì)信息 netstat -s
    2. 顯示 TCP 或 UDP 端口的統(tǒng)計(jì)信息 netstat -st 或 -su
  3. 在 netstat 輸出中顯示 PID 和進(jìn)程名稱 netstat -p

    1. netstat -p 可以與其它開關(guān)一起使用,就可以添加 “PID/進(jìn)程名稱” 到 netstat 輸出中执赡,這樣 debugging 的時(shí)候可以很方便的發(fā)現(xiàn)特定端口運(yùn)行的程序镰踏。

      [root@hadoop201 itshare]# netstat -pt
      Active Internet connections (w/o servers)
      Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
      tcp        0      0 hadoop201:43818         hadoop2:intu-ec-svcdisc TIME_WAIT   -                 
      tcp        0      0 hadoop2:intu-ec-svcdisc hadoop203:46252         ESTABLISHED 2234/java         
      tcp        0      0 hadoop2:intu-ec-svcdisc hadoop202:49768         ESTABLISHED 2234/java         
      tcp        0     96 hadoop201:ssh           192.168.19.1:64945      ESTABLISHED 1974/sshd: itshare 
      tcp        0      0 hadoop201:ssh           192.168.19.1:65078      ESTABLISHED 2005/sshd: itshare 
      tcp        0      0 hadoop2:intu-ec-svcdisc hadoop203:47122         ESTABLISHED 2234/java         
      tcp        0      0 hadoop201:43456         hadoop2:intu-ec-svcdisc ESTABLISHED 2371/java         
      tcp        0      0 hadoop201:42906         hadoop202:8031          ESTABLISHED 2744/java         
      tcp        0      0 hadoop2:intu-ec-svcdisc hadoop201:43456         ESTABLISHED 2234/java    
      
  4. 在 netstat 輸出中不顯示主機(jī),端口和用戶名 (host, port or user)

    當(dāng)你不想讓主機(jī)沙合,端口和用戶名顯示奠伪,使用 netstat -n。將會(huì)使用數(shù)字代替那些名稱首懈。

    同樣可以加速輸出绊率,因?yàn)椴挥眠M(jìn)行比對查詢。

    # netstat -an
    

    如果只是不想讓這三個(gè)名稱中的一個(gè)被顯示究履,使用以下命令

    # netsat -a --numeric-ports
    # netsat -a --numeric-hosts
    # netsat -a --numeric-users
    
  5. 持續(xù)輸出 netstat 信息

    netstat 將每隔一秒輸出網(wǎng)絡(luò)信息滤否。

    # netstat -c
     Active Internet connections (w/o servers)
     Proto Recv-Q Send-Q Local Address           Foreign Address         State
     tcp        0      0 ramesh-laptop.loc:36130 101-101-181-225.ama:www ESTABLISHED
     tcp        1      1 ramesh-laptop.loc:52564 101.11.169.230:www      CLOSING
     tcp        0      0 ramesh-laptop.loc:43758 server-101-101-43-2:www ESTABLISHED
     tcp        1      1 ramesh-laptop.loc:42367 101.101.34.101:www      CLOSING
    
  6. 顯示系統(tǒng)不支持的地址族 (Address Families)

  ```
  netstat --verbose
  ```

  在輸出的末尾,會(huì)有如下的信息

  ```
  netstat: no support for `AF IPX' on this system.
  netstat: no support for `AF AX25' on this system.
  netstat: no support for `AF X25' on this system.
  netstat: no support for `AF NETROM' on this system.
  ```
  1. 顯示核心路由信息 netstat -r
  ```
  [root@hadoop201 itshare]# netstat -r
  Kernel IP routing table
  Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
  default         gateway         0.0.0.0         UG        0 0          0 ens33
  192.168.19.0    0.0.0.0         255.255.255.0   U         0 0          0 ens33
  ```

  

  **注意:** 使用 netstat -rn 顯示數(shù)字格式最仑,不查詢主機(jī)名稱顽聂。
  1. 找出程序運(yùn)行的端口
  并不是所有的進(jìn)程都能找到肥惭,沒有權(quán)限的會(huì)不顯示,使用 root 權(quán)限查看所有的信息紊搪。

  ```
  # netstat -ap | grep ssh
   tcp        1      0 dev-db:ssh           101.174.100.22:39213        CLOSE_WAIT  -
   tcp        1      0 dev-db:ssh           101.174.100.22:57643        CLOSE_WAIT  -
  ```

   **找出運(yùn)行在指定端口的進(jìn)程**

  ```
  # netstat -an | grep ':80'
  ```

  10. **顯示網(wǎng)絡(luò)接口列表**

      ```
      # netstat -i
      Kernel Interface table
      Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
      eth0       1500 0         0      0      0 0             0      0      0      0 BMU
      eth2       1500 0     26196      0      0 0         26883      6      0      0 BMRU
      lo        16436 0         4      0      0 0             4      0      0      0 LRU
      ```

      顯示詳細(xì)信息蜜葱,像是 ifconfig 使用 netstat -ie:

      ```
      # netstat -ie
       Kernel Interface table
       eth0      Link encap:Ethernet  HWaddr 00:10:40:11:11:11
       UP BROADCAST MULTICAST  MTU:1500  Metric:1
       RX packets:0 errors:0 dropped:0 overruns:0 frame:0
       TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
       collisions:0 txqueuelen:1000
       RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
       Memory:f6ae0000-f6b00000
      ```

   11. **IP和TCP分析**

       **查看連接某服務(wù)端口最多的的IP地址**

       ```
       wss8848@ubuntu:~$ netstat -nat | grep "192.168.1.15:22" |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -20
       18 221.136.168.36
       3 154.74.45.242
       2 78.173.31.236
       2 62.183.207.98
       2 192.168.1.14
       2 182.48.111.215
       2 124.193.219.34
       2 119.145.41.2
       2 114.255.41.30
       1 75.102.11.99
       ```

       **TCP各種狀態(tài)列表**

       ```
       wss8848@ubuntu:~$ netstat -nat |awk '{print $6}'
       established)
       Foreign
       LISTEN
       TIME_WAIT
       ESTABLISHED
       TIME_WAIT
       SYN_SENT
       ```

       

       - 先把狀態(tài)全都取出來,然后使用uniq -c統(tǒng)計(jì),之后再進(jìn)行排序耀石。

         ```
         [root@hadoop201 itshare]# netstat -nat |awk '{print $6}'|sort|uniq -c
               1 established)
               7 ESTABLISHED
               1 Foreign
              18 LISTEN
               1 TIME_WAIT
         [root@hadoop201 itshare]# netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
              18 LISTEN
               7 ESTABLISHED
               1 TIME_WAIT
               1 Foreign
         ```

         

       - 分析access.log獲得訪問前10位的ip地址

         ```
         awk '{print $1}' access.log |sort|uniq -c|sort -nr|head -10
         ```

1.6 tar

  • tar 用于壓縮和解壓縮

  • tar 常見選項(xiàng)

    • 必要選項(xiàng)有如下:

      -A 新增壓縮文件到已存在的壓縮
      -B 設(shè)置區(qū)塊大小
      -c 建立新的壓縮文件
      -d 記錄文件的差別
      -r 添加文件到已經(jīng)壓縮的文件
      -u 添加改變了和現(xiàn)有的文件到已經(jīng)存在的壓縮文件
      -x 從壓縮的文件中提取文件
      -t 顯示壓縮文件的內(nèi)容
      -z 支持gzip解壓文件
      -j 支持bzip2解壓文件
      -Z 支持compress解壓文件
      -v 顯示操作過程
      -l 文件系統(tǒng)邊界設(shè)置
      -k 保留原有文件不覆蓋
      -m 保留文件不被覆蓋
      -W 確認(rèn)壓縮文件的正確性
      
    • 可選選項(xiàng)如下:

      -b 設(shè)置區(qū)塊數(shù)目
      -C 切換到指定目錄
      -f 指定壓縮文件
      --help 顯示幫助信息
      --version 顯示版本信息
      
  • 常用命令展示

    tar 
    解包:tar xvf FileName.tar
    打包:tar cvf FileName.tar DirName
    (注:tar是打包牵囤,不是壓縮!)
    
    
    .gz
    解壓1:gunzip FileName.gz
    解壓2:gzip -d FileName.gz
    壓縮:gzip FileName
    
    .tar.gz 和 .tgz
    解壓:tar zxvf FileName.tar.gz
    壓縮:tar zcvf FileName.tar.gz DirName
    
    .bz2
    解壓1:bzip2 -d FileName.bz2
    解壓2:bunzip2 FileName.bz2
    壓縮: bzip2 -z FileName
    
    .tar.bz2
    解壓:tar jxvf FileName.tar.bz2
    壓縮:tar jcvf FileName.tar.bz2 DirName
    
    .bz
    解壓1:bzip2 -d FileName.bz
    解壓2:bunzip2 FileName.bz
    壓縮:未知
    
    .tar.bz
    解壓:tar jxvf FileName.tar.bz
    壓縮:未知
    
    .Z
    解壓:uncompress FileName.Z
    壓縮:compress FileName
    
    .tar.Z
    解壓:tar Zxvf FileName.tar.Z
    壓縮:tar Zcvf FileName.tar.Z DirName
    
    .zip
    解壓:unzip FileName.zip
    壓縮:zip FileName.zip DirName
    
    .rar
    解壓:rar x FileName.rar
    壓縮:rar a FileName.rar DirName 
    

1.7 df -h

Linux df(英文全拼:disk free) 命令用于顯示目前在 Linux 系統(tǒng)上的文件系統(tǒng)磁盤使用情況統(tǒng)計(jì)滞伟。

  • 常用選項(xiàng):

    -a, --all 包含所有的具有 0 Blocks 的文件系統(tǒng)
    --block-size={SIZE} 使用 {SIZE} 大小的 Blocks
    -h, --human-readable 使用人類可讀的格式(預(yù)設(shè)值是不加這個(gè)選項(xiàng)的...)
    -H, --si 很像 -h, 但是用 1000 為單位而不是用 1024
    -i, --inodes 列出 inode 資訊揭鳞,不列出已使用 block
    -k, --kilobytes 就像是 --block-size=1024
    -l, --local 限制列出的文件結(jié)構(gòu)
    -m, --megabytes 就像 --block-size=104857
    --no-sync 取得資訊前不 sync (預(yù)設(shè)值)
    -P, --portability 使用 POSIX 輸出格式
    --sync 在取得資訊前 sync
    -t, --type=TYPE 限制列出文件系統(tǒng)的 TYPE
    -T, --print-type 顯示文件系統(tǒng)的形式
    -x, --exclude-type=TYPE 限制列出文件系統(tǒng)不要顯示 TYPE
    -v (忽略)
    --help 顯示這個(gè)幫手并且離開
    --version 輸出版本資訊并且離開
    
  • 舉例

    • 顯示文件系統(tǒng)的磁盤使用情況統(tǒng)計(jì)

      [root@hadoop201 itshare]# df
      文件系統(tǒng)                   1K-塊     已用     可用 已用% 掛載點(diǎn)
      devtmpfs                 1918620        0  1918620    0% /dev
      tmpfs                    1930652        0  1930652    0% /dev/shm
      tmpfs                    1930652    11892  1918760    1% /run
      tmpfs                    1930652        0  1930652    0% /sys/fs/cgroup
      /dev/mapper/centos-root 47285700 10178564 37107136   22% /
      /dev/sda1                1038336   153928   884408   15% /boot
      tmpfs                     386132        0   386132    0% /run/user/1000
      

      第一列指定文件系統(tǒng)的名稱,

      第二列指定一個(gè)特定的文件系統(tǒng)1K-塊1K是1024字節(jié)為單位的總內(nèi)存梆奈。

      已用和可用列分別表示正在使用中野崇,空閑的磁盤的總量。

      已用%列指定使用的內(nèi)存的百分比亩钟,

      而最后一欄"掛載點(diǎn)"指定的文件系統(tǒng)的掛載點(diǎn)乓梨。

  • -h選項(xiàng),通過它可以產(chǎn)生可讀的格式df命令的輸出:

    [root@hadoop201 itshare]# df -h
    文件系統(tǒng)                 容量  已用  可用 已用% 掛載點(diǎn)
    devtmpfs                 1.9G     0  1.9G    0% /dev
    tmpfs                    1.9G     0  1.9G    0% /dev/shm
    tmpfs                    1.9G   12M  1.9G    1% /run
    tmpfs                    1.9G     0  1.9G    0% /sys/fs/cgroup
    /dev/mapper/centos-root   46G  9.8G   36G   22% /
    /dev/sda1               1014M  151M  864M   15% /boot
    tmpfs                    378M     0  378M    0% /run/user/1000
    

    我們可以看到輸出顯示的數(shù)字形式的'G'(千兆字節(jié))清酥,"M"(兆字節(jié))和"K"(千字節(jié))扶镀。

    這使輸出容易閱讀和理解,從而使顯示可讀的焰轻。請注意臭觉,第二列的名稱也發(fā)生了變化,為了使顯示可讀的"大小"辱志。

1.8 find

find命令用來在指定目錄下查找文件蝠筑。任何位于參數(shù)之前的字符串都將被視為欲查找的目錄名。如果使用該命令時(shí)揩懒,不設(shè)置任何參數(shù)菱肖,則 find 命令將在當(dāng)前目錄下查找子目錄與文件。并且將查找到的子目錄和文件全部進(jìn)行顯示旭从。

  • 語法

    find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;
    
  • 參數(shù)說明

    find 根據(jù)下列規(guī)則判斷 path 和 expression稳强,在命令列上第一個(gè) - ( ) , ! 之前的部份為 path,之后的是 expression和悦。如果 path 是空字串則使用目前路徑退疫,如果 expression 是空字串則使用 -print 為預(yù)設(shè) expression。

    expression 中可使用的選項(xiàng)有二三十個(gè)之多鸽素,在此只介紹最常用的部份褒繁。

    • -mount, -xdev : 只檢查和指定目錄在同一個(gè)文件系統(tǒng)下的文件,避免列出其它文件系統(tǒng)中的文件

    • -amin n : 在過去 n 分鐘內(nèi)被讀取過

    • -anewer file : 比文件 file 更晚被讀取過的文件

    • -atime n : 在過去n天內(nèi)被讀取過的文件

    • -cmin n : 在過去 n 分鐘內(nèi)被修改過

    • -cnewer file :比文件 file 更新的文件

    • -ctime n : 在過去n天內(nèi)被修改過的文件

    • -empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名稱是 name

    • -ipath p, -path p : 路徑名稱符合 p 的文件馍忽,ipath 會(huì)忽略大小寫

    • -name name, -iname name : 文件名稱符合 name 的文件棒坏。iname 會(huì)忽略大小寫

    • -size n : 文件大小 是 n 單位燕差,b 代表 512 位元組的區(qū)塊,c 表示字元數(shù)坝冕,k 表示 kilo bytes徒探,w 是二個(gè)位元組。

    • -type c : 文件類型是 c 的文件喂窟。

      • d: 目錄

      • c: 字型裝置文件

      • b: 區(qū)塊裝置文件

      • p: 具名貯列

      • f: 一般文件

      • l: 符號連結(jié)

      • s: socket

    • -pid n : process id 是 n 的文件

    • 你可以使用 ( ) 將運(yùn)算式分隔测暗,并使用下列運(yùn)算。

      • exp1 -and exp2

      • ! expr

      • -not expr

      • exp1 -or exp2

      • exp1, exp2

  • 實(shí)例

    • 列出當(dāng)前目錄下所有csv文件

      [root@hadoop201 itshare]# find . -name "*.csv"
      ./partition.csv
      
  • 將當(dāng)前目錄及其下子目錄中所有文件列出

    find . -type f
    
  • 將當(dāng)前目錄及其子目錄下所有最近 1 天內(nèi)更新過的文件列出

    [root@hadoop201 module]# find . -ctime -1
    ./hadoop-3.1.3/logs/userlogs
    ./hadoop-3.1.3/logs/hadoop-itshare-historyserver-hadoop201.out
    ./hadoop-3.1.3/logs/hadoop-itshare-namenode-hadoop201.out
    ./hadoop-3.1.3/logs/hadoop-itshare-datanode-hadoop201.out
    ./hadoop-3.1.3/logs/hadoop-itshare-nodemanager-hadoop201.out
    
  • 查找 /var/log 目錄中更改時(shí)間在 7 日以前的普通文件磨澡,并在刪除之前詢問它們:

    [root@hadoop201 module]# find /var/log -type f -mtime +7 -ok rm {} \;
    < rm ... /var/log/tallylog > ? 
    
  • 查找當(dāng)前目錄中文件屬主具有讀碗啄、寫權(quán)限,并且文件所屬組的用戶和其他用戶具有讀權(quán)限的文件:

    find . -type f -perm 644 -exec ls -l {} \;
    
  • 查找系統(tǒng)中所有文件長度為 0 的普通文件稳摄,并列出它們的完整路徑:

    find / -type f -size 0 -exec ls -l {} \;
    

1.9 crontab

crontab是用來定期執(zhí)行程序的命令稚字。

  • 語法

    crontab [ -u user ] file
    或
    crontab [ -u user ] { -l | -r | -e }
    

    crontab 是用來讓使用者在固定時(shí)間或固定間隔執(zhí)行程序之用,換句話說厦酬,也就是類似使用者的時(shí)程表胆描。

    -u user 是指設(shè)定指定 user 的時(shí)程表,這個(gè)前提是你必須要有其權(quán)限(比如說是 root)才能夠指定他人的時(shí)程表弃锐。如果不使用 -u user 的話袄友,就是表示設(shè)定自己的時(shí)程表殿托。

    • 選項(xiàng)

      • -e : 執(zhí)行文字編輯器來設(shè)定時(shí)程表霹菊,內(nèi)定的文字編輯器是 VI,如果你想用別的文字編輯器支竹,則請先設(shè)定 VISUAL 環(huán)境變數(shù)來指定使用那個(gè)文字編輯器(比如說 setenv VISUAL joe)
      • -r : 刪除目前的時(shí)程表
      • -l : 列出目前的時(shí)程表
    • 時(shí)間格式

      f1 f2 f3 f4 f5 program
      
      • 其中 f1 是表示分鐘旋廷,f2 表示小時(shí),f3 表示一個(gè)月份中的第幾日礼搁,f4 表示月份饶碘,f5 表示一個(gè)星期中的第幾天。program 表示要執(zhí)行的程序。
      • 當(dāng) f1 為 * 時(shí)表示每分鐘都要執(zhí)行 program,f2 為 * 時(shí)表示每小時(shí)都要執(zhí)行程序钳恕,其馀類推
      • 當(dāng) f1 為 a-b 時(shí)表示從第 a 分鐘到第 b 分鐘這段時(shí)間內(nèi)要執(zhí)行撼港,f2 為 a-b 時(shí)表示從第 a 到第 b 小時(shí)都要執(zhí)行,其馀類推
      • 當(dāng) f1 為 */n 時(shí)表示每 n 分鐘個(gè)時(shí)間間隔執(zhí)行一次局齿,f2 為 */n 表示每 n 小時(shí)個(gè)時(shí)間間隔執(zhí)行一次,其馀類推
      • 當(dāng) f1 為 a, b, c,... 時(shí)表示第 a, b, c,... 分鐘要執(zhí)行,f2 為 a, b, c,... 時(shí)表示第 a, b, c...個(gè)小時(shí)要執(zhí)行负拟,其馀類推
      *    *    *    *    *
      -    -    -    -    -
      |    |    |    |    |
      |    |    |    |    +----- 星期中星期幾 (0 - 7) (星期天 為0)
      |    |    |    +---------- 月份 (1 - 12) 
      |    |    +--------------- 一個(gè)月中的第幾天 (1 - 31)
      |    +-------------------- 小時(shí) (0 - 23)
      +------------------------- 分鐘 (0 - 59)
      
    • 使用者也可以將所有的設(shè)定先存放在文件中,用 crontab file 的方式來設(shè)定執(zhí)行時(shí)間

  • 舉例

    • 每一分鐘執(zhí)行一次 /bin/ls

      * * * * * /bin/ls
      
  • 在 12 月內(nèi), 每天的早上 6 點(diǎn)到 12 點(diǎn)歹河,每隔 3 個(gè)小時(shí) 0 分鐘執(zhí)行一次 /usr/bin/backup:

    0 6-12/3 * 12 * /usr/bin/backup
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末掩浙,一起剝皮案震驚了整個(gè)濱河市花吟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌厨姚,老刑警劉巖衅澈,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異遣蚀,居然都是意外死亡矾麻,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門芭梯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來险耀,“玉大人,你說我怎么就攤上這事玖喘∷ξ” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵累奈,是天一觀的道長贬派。 經(jīng)常有香客問我,道長澎媒,這世上最難降的妖魔是什么搞乏? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮戒努,結(jié)果婚禮上请敦,老公的妹妹穿的比我還像新娘。我一直安慰自己储玫,他們只是感情好侍筛,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著撒穷,像睡著了一般匣椰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上端礼,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天禽笑,我揣著相機(jī)與錄音,去河邊找鬼蛤奥。 笑死佳镜,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的喻括。 我是一名探鬼主播邀杏,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了望蜡?” 一聲冷哼從身側(cè)響起唤崭,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎脖律,沒想到半個(gè)月后谢肾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡小泉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年芦疏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片微姊。...
    茶點(diǎn)故事閱讀 38,059評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡酸茴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出兢交,到底是詐尸還是另有隱情薪捍,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布配喳,位于F島的核電站酪穿,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏晴裹。R本人自食惡果不足惜被济,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望涧团。 院中可真熱鬧只磷,春花似錦、人聲如沸少欺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赞别。三九已至,卻和暖如春配乓,著一層夾襖步出監(jiān)牢的瞬間仿滔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工犹芹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留崎页,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓腰埂,卻偏偏與公主長得像飒焦,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 六牺荠、常用基本命令 7.1幫助命令 7.1.1 man獲得幫助信息 1.基本語法 man [命令或配置文件] (功能...
    hello李治中閱讀 356評論 0 0
  • # 切換目錄 cd # 示例 # 切換到上一層目錄 cd .. # 切換到/opt/software cd /op...
    羞澀的二黃閱讀 709評論 0 0
  • 寫在前面 萬丈高樓平地起翁巍,學(xué)習(xí)Linux需要掌握大量的命令,但是不要因?yàn)長inux的命令繁多而生退卻之心休雌。學(xué)習(xí)Li...
    真香IT閱讀 432評論 0 5
  • 在學(xué)習(xí)Hadoop時(shí)接觸到里L(fēng)inux灶壶,剛剛學(xué)習(xí)linux,上網(wǎng)收集了一些覺得太零散了,找到一個(gè)比較全的杈曲,轉(zhuǎn)載自:...
    王阿根閱讀 228評論 1 3
  • 久違的晴天驰凛,家長會(huì)。 家長大會(huì)開好到教室時(shí)担扑,離放學(xué)已經(jīng)沒多少時(shí)間了恰响。班主任說已經(jīng)安排了三個(gè)家長分享經(jīng)驗(yàn)。 放學(xué)鈴聲...
    飄雪兒5閱讀 7,494評論 16 22