作為伺服器,瞭解他的實時執行情況是非常有必要的,而且要對其進行全面完整的監控,其中資源部分比如cpu,men,io,disk,network等,這些比較凌亂的東西,用linux提供的命令就可以了滿足需要了,不必用那些龐大臃腫的企業級監控工具,比如Nagios,OpenNMS等。
還有比較重要的就是/proc檔案系統了,裡面的檔案反應了幾乎所有系統當前執行時的狀態,是系統的實時快照,這時linux裡一切都是檔案這種理念的反映。如果你對於proc有及其強壯的瞭解,那麼什麼xx工具基本都可以忽略了。
1,uptime命令
- root@ubuntu:~# uptime
- 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命令
- root@ubuntu:~# free
- total used free shared buffers cached
- Mem: 2025608 1942916 82692 0 451136 785420
- -/+ buffers/cache: 706360 1319248
- 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命令
- top - 13:50:53 up 5:22, 3 users, load average: 0.53, 0.67, 0.72
- Tasks: 179 total, 1 running, 177 sleeping, 0 stopped, 1 zombie
- 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
- Mem: 2025608k total, 1966004k used, 59604k free, 456644k buffers
- Swap: 261116k total, 0k used, 261116k free, 787140k cached
- PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
- 2096 fenix 20 0 280m 62m 20m S 14 3.2 55:30.27 chrome
動態全面的顯示當前機器的負載情況,功能非常強大。
4,pmap命令
- root@ubuntu:~# pmap -x 5215
- 5215: bash
- Address Kbytes RSS Dirty Mode Mapping
- 002da000 0 4 0 r-x-- [ anon ]
- 00323000 0 20 0 r-x-- libnsl-2.12.1.so
- 00336000 0 4 4 r---- libnsl-2.12.1.so
- 00337000 0 4 4 rw--- libnsl-2.12.1.so
- 00338000 0 0 0 rw--- [ anon ]
- 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命令
- root@ubuntu:~# mpstat
- Linux 2.6.35-22-generic (ubuntu) 04/27/2011 _i686_ (2 CPU)
- 02:26:47 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
- 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命令
- root@ubuntu:~# iostat
- Linux 2.6.35-22-generic (ubuntu) 04/27/2011 _i686_ (2 CPU)
- avg-cpu: %user %nice %system %iowait %steal %idle
- 11.77 0.27 1.94 0.23 0.00 85.78
- Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
- sda 3.39 199.43 55.77 4337613 1213008
- sdb 0.01 0.09 0.00 2035 82
可能需要安裝sysstat包才能使用。顯示磁碟的io情況
7,vmstat命令
- root@ubuntu:~# vmstat -a
- procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
- r b swpd free inact active si so bi bo in cs us sy id wa
- 0 0 0 84420 975336 892620 0 0 74 31 728 146 12 2 86 0
顯示系統當前的各種負載情況,功能很全面。
8,sar命令
- Linux 2.6.35-22-generic (ubuntu) 04/27/2011 _i686_ (2 CPU)
- 12:25:01 PM CPU %user %nice %system %iowait %steal %idle
- 12:35:01 PM all 11.14 0.10 1.57 0.32 0.00 86.88
- 12:45:01 PM all 12.24 0.05 2.06 0.15 0.00 85.50
- 12:55:01 PM all 13.14 0.07 2.08 0.16 0.00 84.55
- 01:05:01 PM all 10.81 0.04 1.80 0.04 0.00 87.31
- 01:15:01 PM all 12.50 0.08 2.32 0.06 0.00 85.04
所謂的瑞士軍刀,超級全面的監控工具,光是man手冊就1300多行,這個以後單獨寫一下,可以把上面的所有命令都替代了。
9,strace命令
- root@ubuntu:~# strace -p 5482
- Process 5482 attached - interrupt to quit
- waitpid(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0) = 5487
- --- SIGCHLD (Child exited) @ 0 (0) ---
- sigreturn() = ? (mask now [])
- waitpid(-1, 0xbfae781c, WNOHANG) = -1 ECHILD (No child processes)
- rt_sigaction(SIGINT, {0x805b950, [], 0}, NULL, 8) = 0
- rt_sigaction(SIGQUIT, {SIG_DFL, [], 0}, NULL, 8) = 0
- close(4) = 0
- chdir("/home/fenix") = 0
- ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
strace擷取和記錄程式的系統呼叫,以及收到的各種訊號,監控程式的資訊和狀態。
10,ulimit命令
- root@ubuntu:~# ulimit -a
- core file size (blocks, -c) 0
- data seg size (kbytes, -d) unlimited
- scheduling priority (-e) 20
- file size (blocks, -f) unlimited
- pending signals (-i) 16382
- max locked memory (kbytes, -l) 64
- max memory size (kbytes, -m) unlimited
- open files (-n) 1024
- pipe size (512 bytes, -p) 8
- POSIX message queues (bytes, -q) 819200
- real-time priority (-r) 0
- stack size (kbytes, -s) 8192
- cpu time (seconds, -t) unlimited
- max user processes (-u) unlimited
- virtual memory (kbytes, -v) unlimited
- file locks (-x) unlimited
ulimit是bash內建命令,顯示當前使用者的shell使用限制情況。
可以使用相應的選項修改特定的值.