linux 系統效能管理工具

lishiran發表於2007-05-19
Linux是一個開放的、高可配置的作業系統,一個合格的Linux系統管理員應該可支援不同應用環境的要求。下面介紹一些管理工具,可幫助我們瞭解系統狀態和最佳化系統。[@more@]

top

  1. top命令可實時地顯示Linux系統的程式、CPU、記憶體、負載等的資訊。它是我們瞭解系統整體狀態最好的工具。

    top - 10:06:09 up 31 days,  2:14,  1 user,  load average: 0.00, 0.00, 0.00
    Tasks:  47 total,   1 running,  46 sleeping,   0 stopped,   0 zombie
     Cpu0 :  0.0% us,  0.0% sy,  0.0% ni, 100.0% id,  0.0% wa,  0.0% hi,  0.0% si
     Cpu1 :  0.3% us,  0.0% sy,  0.0% ni, 99.7% id,  0.0% wa,  0.0% hi,  0.0% si
    Mem:   1034732k total,   472336k used,   562396k free,    16460k buffers
    Swap:  1052248k total,        0k used,  1052248k free,   357940k cached
    
      PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND          
         1 root      16   0  1504  480 1352 S  0.0  0.0   0:00.59 init            
         2 root      RT   0     0    0    0 S  0.0  0.0   0:00.06 migration/0    
         3 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0   
         4 root      RT   0     0    0    0 S  0.0  0.0   0:00.04 migration/1  
         5 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/1 
         6 root       5 -10     0    0    0 S  0.0  0.0   0:00.00 events/0        
         7 root       5 -10     0    0    0 S  0.0  0.0   0:00.00 events/1       
         8 root       5 -10     0    0    0 S  0.0  0.0   0:00.00 khelper       
         9 root       5 -10     0    0    0 S  0.0  0.0   0:00.00 kblockd/0    
         10 root       5 -10     0    0    0 S  0.0  0.0   0:00.00 kblockd/1   
         11 root      17   0     0    0    0 S  0.0  0.0   0:00.00 khubd      
         38 root      15   0     0    0    0 S  0.0  0.0   0:00.00 pdflush   
         37 root      15   0     0    0    0 S  0.0  0.0   0:00.00 kirqd    
         41 root       6 -10     0    0    0 S  0.0  0.0   0:00.00 aio/0   
         40 root      16   0     0    0    0 S  0.0  0.0   0:00.00 kswapd0
         42 root       5 -10     0    0    0 S  0.0  0.0   0:00.00 aio/1 
    

    top命令的執行狀態是一個實時的顯示過程,我們可在這個介面監控系統執行情況。我們可透過幾個按鍵來控制top命令,如按q可退出top命令狀態,按s可輸入資訊的更新頻率等。這些命令可按h幫助鍵查詢。如:

    Help for Interactive Commands - procps version 3.2.1
    Window 1:Def: Cumulative mode Off.  System: Delay 3.0 secs; Secure mode Off.
    
      Z,B       Global: 'Z' change color mappings; 'B' disable/enable bold
      l,t,m     Toggle Summaries: 'l' load avg; 't' task/cpu stats; 'm' mem info
      1,I       Toggle SMP view: '1' single/separate states; 'I' Irix/Solaris mode
    
      f,o     . Fields/Columns: 'f' add or remove; 'o' change display order
      F or O  . Select sort field
           . Move sort field: '' next col right
      R       . Toggle normal/reverse sort
      c,i,S   . Toggle: 'c' cmd name/line; 'i' idle tasks; 'S' cumulative time
      x,y     . Toggle highlights: 'x' sort field; 'y' running tasks
      z,b     . Toggle: 'z' color/mono; 'b' bold/reverse (only if 'x' or 'y')
      u       . Show specific user only
      n or #  . Set maximum tasks displayed
    
      k,r       Manipulate tasks: 'k' kill; 'r' renice
      d or s    Set update interval
      W         Write configuration file
      q         Quit
              ( commands shown with '.' require a visible task display window ) 
    Press 'h' or '?' for help with Windows,
    any other key to continue 
    
  2. ps

    ps命令可查詢系統的程式狀態,常用的命令引數是ps -aux,該命令可顯示所有使用者的程式,如果程式的命令太長,則顯示的程式資訊會不全。我們可用ps -auxw命令來加長顯示,w引數可多加幾個,最多可加三個,以顯示更長的程式資訊。

    debian:~# ps -aux
    USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
    root         1  0.0  0.0  1416  448 ?        S    May24   0:06 init [3] 
    root         2  0.0  0.0     0    0 ?        SW   May24   0:00 [keventd]
    root         3  0.0  0.0     0    0 ?        SW   May24   0:00 [keventd]
    root         4  0.0  0.0     0    0 ?        SW   May24   0:00 [keventd]
    root         5  0.0  0.0     0    0 ?        SW   May24   0:00 [keventd]
    root         6  0.0  0.0     0    0 ?        SWN  May24   0:11 [ksoftirqd_CPU0]
    root         7  0.0  0.0     0    0 ?        SWN  May24   0:11 [ksoftirqd_CPU1]
    root         8  0.0  0.0     0    0 ?        SWN  May24   0:10 [ksoftirqd_CPU2]
    root         9  0.0  0.0     0    0 ?        SWN  May24   0:10 [ksoftirqd_CPU3]
    root        10  0.0  0.0     0    0 ?        SW   May24  17:29 [kswapd]
    root        11  0.0  0.0     0    0 ?        SW   May24   0:00 [kreclaimd]
    root        12  0.0  0.0     0    0 ?        SW   May24  15:47 [bdflush]
    root        13  0.0  0.0     0    0 ?        SW   May24   0:00 [kupdated]
    root        14  0.0  0.0     0    0 ?        SW   May24   0:00 [mdrecoveryd]
    root        21  0.0  0.0     0    0 ?        SW   May24   0:00 [scsi_eh_2]
    root        24  0.0  0.0     0    0 ?        SW   May24   0:47 [kjournald]
    root        84  0.0  0.0     0    0 ?        SW   May24   0:00 [khubd]
    root       177  0.0  0.0     0    0 ?        SW   May24   0:59 [kjournald]
    root       178  0.0  0.0     0    0 ?        SW   May24   0:00 [kjournald]
    root       514  0.0  0.0  1476  600 ?        S    May24   0:06 syslogd -m 0
    

    ps命令的引數有以下幾個:

    -a     顯示所有終端下所執行的程式
    a      顯示在當前終端下所執行的程式
    -A     顯示所有的程式,包含所有的服務
    -f     顯示UID,PPIP,C,STIME欄位
    -H     以樹狀格式顯示,可表達程式間的相互關係
    S      列出包含已死亡的子程式資訊
    u      以使用者為單位列出程式資訊
    v      顯示程式的虛擬記憶體資訊
    V      顯示ps的版本資訊
    x      顯示所有程式
    
  3. kill

    kill命令可終止程式,後接程式號即可。如我們可用上面的ps命令查出你想終止的程式的程式號為299,用kill 299則可把該程式終止。

  4. free

    free可顯示系統的記憶體使用情況。-b、-k、-m三個參數列示以bytes,kilobytes和megabytes為單位顯示記憶體的使用情況。

    debian:~# free -m
                 total       used       free     shared    buffers     cached
    Mem:          2010       2005          5        456        146       1150
    -/+ buffers/cache:        708       1301
    Swap:         2000        127       1872
    
  5. vmstat

    使用vmstat 2 命令可每隔2秒顯示一行系統資訊,這些資訊包括CPU佔用效、記憶體使用情況和磁碟IO等。透過它我們可實時監控系統的資源使用情況,進行系統最佳化。

    debian:~# vmstat 2
       procs                      memory    swap          io     system         cpu
     r  b  w   swpd   free   buff  cache  si  so    bi    bo   in    cs  us  sy  id
     0  0  0 130804   6000 149744 1179340   0   0     0     1    1     2   0   0   2
     0  0  0 130804   6000 149744 1179396   0   0    28   162  266   387   0   0 100
     0  0  0 130804   6000 149744 1179472   0   0    30   110  222   280   0   0  99
     1  0  0 130804   6000 149744 1179516   0   0    22   122  235   306   9   2  89
     0  0  0 130804   6000 149748 1179580   0   0    24   148  373   469  10   1  90
     1  0  0 130804   6000 149748 1179628   0   0    24    90  271   356  13   1  85
     1  0  0 130804   6000 149748 1179700   0   0    28   118  263   322  23   2  76
     0  0  0 130804   6000 149748 1179760   0   0    30   148  279   409  14   1  85
    
  6. sar

    sar工具可幫我們收集動態的系統資訊,它的引數很豐富,功能強大。sar工具的特點是可透過計數器和計數間隔來定期、定量地輸出系統狀態資訊。如:

    debian:~# sar -b 2 10
    
    09時47分48    tps      rtps      wtps   bread/s   bwrtn/s
    09時47分50    23.50      3.50     20.00     28.00    176.00
    09時47分52    47.50      6.50     41.00     52.00    424.00
    09時47分54    28.50      4.50     24.00     36.00    204.00
    09時47分56    52.00      9.50     42.50     76.00    352.00
    09時47分58    30.50      5.00     25.50     40.00    216.00
    09時48分00    28.50      4.50     24.00     36.00    204.00
    09時48分02    32.00      3.50     28.50     28.00    412.00
    09時48分04    46.00      5.50     40.50     44.00    388.00
    09時48分06    26.00      5.00     21.00     40.00    196.00
    
    09時48分06      tps      rtps      wtps   bread/s   bwrtn/s
    09時48分08    35.00      5.00     30.00     40.00    264.00
    Average:      34.95      5.25     29.70     42.00    283.60
    

    上面的命令表示隔2秒輸出一條磁碟I/O資訊,共輸出10條。-b表示輸出磁碟I/O資訊,如果是-B則可輸出paging資訊,引數還很多,請用man sar檢視。

  7. watch

    watch命令可重複執行某個命令,監控命令的執行狀態。下面這個命令可讓我們監控Z2.log檔案的大小變化。

    debian:~# watch -n 3 du /home/Jims/zope/log/Z2.log
    

    -n 3表示每隔3秒執行一次du /home/Jims/zope/log/Z2.log。

  8. sysctl

    使用sysctl -a可顯示所有執行中的核心引數,用sysctl -w fs.file-max=10240 命令可修改fs.file-max核心引數的值,並使引數馬上生效。但重啟系統後,引數設定會失效,因為命令列只能修改執行中的核心引數。如果我們要把引數設定固定下來,可把核心引數寫入/etc/sysctl.conf檔案。該檔案的格式如下:

    # /etc/sysctl.conf - Configuration file for setting system variables
    # See sysctl.conf (5) for information.
    
    # Controls IP packet forwarding
    net.ipv4.ip_forward = 0
    
    # Controls source route verification
    net.ipv4.conf.default.rp_filter = 1
    
    # Controls the System Request debugging functionality of the kernel
    kernel.sysrq = 0
    
    # Controls whether core dumps will append the PID to the core filename.
    # Useful for debugging multi-threaded applications.
    kernel.core_uses_pid = 1
    
  9. ulimit

    使用ulimit -a可顯示系統的資源限制情況。

  10. netstat

    netstat -nal可顯示所有的網路連線。

  11. pppstats

    使用pppstats可得到ppp連線的狀態資訊。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9099175/viewspace-915524/,如需轉載,請註明出處,否則將追究法律責任。

相關文章