作為伺服器,瞭解他的實時執行情況是非常有必要的,而且要對其進行全面完整的監控,其中資源部分比如cpu,men,io,disk,network等,這些比較凌亂的東西,用linux提供的命令就可以了滿足需要了,不必用那些龐大臃腫的企業級監控工具,比如Nagios,OpenNMS等。

還有比較重要的就是/proc檔案系統了,裡面的檔案反應了幾乎所有系統當前執行時的狀態,是系統的實時快照,這時linux裡一切都是檔案這種理念的反映。如果你對於proc有及其強壯的瞭解,那麼什麼xx工具基本都可以忽略了。


1,uptime命令
  1. root@ubuntu:~# uptime 
  2.  13:22:12 up  4:54,  3 users,  load average: 0.93, 0.84, 0.81 

    其中13:22:12是當前的時間;up 4:54 是已經執行了多長時間;3 users 是當前有幾個使用者登入;load average :0.93 0.84 0.81 表示cpu在1min,5min,15min前的負載情況,值代表等待處理的process數,1在單核cpu機器上代表cpu總是處在運算狀態。

2,free命令
  1. root@ubuntu:~# free 
  2.              total       used       free     shared    buffers     cached 
  3. Mem:       2025608    1942916      82692          0     451136     785420 
  4. -/+ buffers/cache:     706360    1319248 
  5. Swap:       261116          0     261116 
  顯示當前系統所有的、已使用、未分配的記憶體,還有緩衝區和快取記憶體的值
  mem.total = mem.used + mem.free 
  men.used = mem.buffers + mem.cached + buf/cac.used
  mem.total = buf/cac.used + buf/cac.free
  free [-b|-k|-m|-g] [-l] [-o] [-t] [-s delay] [-c count]
  free -mlt 全面顯示資訊
3,top命令
  1. top - 13:50:53 up  5:22,  3 users,  load average: 0.53, 0.67, 0.72 
  2. Tasks: 179 total,   1 running, 177 sleeping,   0 stopped,   1 zombie 
  3. Cpu(s):  7.9%us,  1.2%sy,  1.2%ni, 89.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st 
  4. Mem:   2025608k total,  1966004k used,    59604k free,   456644k buffers 
  5. Swap:   261116k total,        0k used,   261116k free,   787140k cached 
  6.  
  7.   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND             
  8.  2096 fenix     20   0  280m  62m  20m S   14  3.2  55:30.27 chrome   
  動態全面的顯示當前機器的負載情況,功能非常強大。
 
4,pmap命令
  1. root@ubuntu:~# pmap -x 5215 
  2. 5215:   bash 
  3. Address   Kbytes     RSS   Dirty Mode   Mapping 
  4. 002da000       0       4       0 r-x--    [ anon ] 
  5. 00323000       0      20       0 r-x--  libnsl-2.12.1.so 
  6. 00336000       0       4       4 r----  libnsl-2.12.1.so 
  7. 00337000       0       4       4 rw---  libnsl-2.12.1.so 
  8. 00338000       0       0       0 rw---    [ anon ] 
  9. 003b0000       0       8       0 r-x--  libdl-2.12.1.so 
 顯示程式的記憶體使用情況,可以判斷哪些程式消耗樂大量資源
 address,程式所佔地址空間;Kbytes,地址虛擬段大小;RSS,裝置號;Dirty,好像是不是獨佔的記憶體大小;mode,佔用模式,rwxsp,s=shared,p=private。mapping,bash對應的映像檔名
   pmap [ -x | -d ] [ -q ] pids  x是擴充套件模式,d是裝置模式,q是簡潔模式
 
5,mpstat命令
  1. root@ubuntu:~# mpstat 
  2. Linux 2.6.35-22-generic (ubuntu)    04/27/2011  _i686_  (2 CPU) 
  3.  
  4. 02:26:47 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle 
  5. 02:26:47 PM  all   11.76    0.27    1.74    0.23    0.00    0.20    0.00    0.00   85.79 
  顯示多cpu的利用情況
  mpstat -I ALL -u
 
6,iostat命令
  1. root@ubuntu:~# iostat  
  2. Linux 2.6.35-22-generic (ubuntu)    04/27/2011  _i686_  (2 CPU) 
  3.  
  4. avg-cpu:  %user   %nice %system %iowait  %steal   %idle 
  5.           11.77    0.27    1.94    0.23    0.00   85.78 
  6.  
  7. Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn 
  8. sda               3.39       199.43        55.77    4337613    1213008 
  9. sdb               0.01         0.09         0.00       2035         82 
   可能需要安裝sysstat包才能使用。顯示磁碟的io情況
 
7,vmstat命令
  1. root@ubuntu:~# vmstat -a 
  2. procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- 
  3.  r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa 
  4.  0  0      0  84420 975336 892620    0    0    74    31  728  146 12  2 86  0 
  顯示系統當前的各種負載情況,功能很全面。
 
8,sar命令
  1. Linux 2.6.35-22-generic (ubuntu)    04/27/2011  _i686_  (2 CPU) 
  2.  
  3. 12:25:01 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle 
  4. 12:35:01 PM     all     11.14      0.10      1.57      0.32      0.00     86.88 
  5. 12:45:01 PM     all     12.24      0.05      2.06      0.15      0.00     85.50 
  6. 12:55:01 PM     all     13.14      0.07      2.08      0.16      0.00     84.55 
  7. 01:05:01 PM     all     10.81      0.04      1.80      0.04      0.00     87.31 
  8. 01:15:01 PM     all     12.50      0.08      2.32      0.06      0.00     85.04 
  所謂的瑞士軍刀,超級全面的監控工具,光是man手冊就1300多行,這個以後單獨寫一下,可以把上面的所有命令都替代了。
 
9,strace命令
  1. root@ubuntu:~# strace -p 5482 
  2. Process 5482 attached - interrupt to quit 
  3. waitpid(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0) = 5487 
  4. --- SIGCHLD (Child exited) @ 0 (0) --- 
  5. sigreturn()                             = ? (mask now []) 
  6. waitpid(-1, 0xbfae781c, WNOHANG)        = -1 ECHILD (No child processes) 
  7. rt_sigaction(SIGINT, {0x805b950, [], 0}, NULL, 8) = 0 
  8. rt_sigaction(SIGQUIT, {SIG_DFL, [], 0}, NULL, 8) = 0 
  9. close(4)                                = 0 
  10. chdir("/home/fenix")                    = 0 
  11. ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0 
   strace擷取和記錄程式的系統呼叫,以及收到的各種訊號,監控程式的資訊和狀態。
 
10,ulimit命令
  1. root@ubuntu:~# ulimit -a 
  2. core file size          (blocks, -c) 0 
  3. data seg size           (kbytes, -d) unlimited 
  4. scheduling priority             (-e) 20 
  5. file size               (blocks, -f) unlimited 
  6. pending signals                 (-i) 16382 
  7. max locked memory       (kbytes, -l) 64 
  8. max memory size         (kbytes, -m) unlimited 
  9. open files                      (-n) 1024 
  10. pipe size            (512 bytes, -p) 8 
  11. POSIX message queues     (bytes, -q) 819200 
  12. real-time priority              (-r) 0 
  13. stack size              (kbytes, -s) 8192 
  14. cpu time               (seconds, -t) unlimited 
  15. max user processes              (-u) unlimited 
  16. virtual memory          (kbytes, -v) unlimited 
  17. file locks                      (-x) unlimited 
  ulimit是bash內建命令,顯示當前使用者的shell使用限制情況。
  可以使用相應的選項修改特定的值.