作为服务器,了解他的实时运行情况是非常有必要的,而且要对其进行全面完整的监控,其中资源部分比如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使用限制情况。
  可以使用相应的选项修改特定的值.