8、free

  /bin/free命令显示所有空闲的和使用的内存数量,包括swap。同时也包含内核使用的缓存。

total used free shared buffers cached
Mem: 776492 263480 513012 0 52332 162504 -/+ buffers/cache: 48644 727848 Swap: 1044184 0 1044184

  9、Traffic-vis

  Traffic-vis是一套测定哪些主机在IP网进行通信、通信的目标主机以及传输的数据量。并输出纯文本、HTML或者GIF格式的报告。

  注:Traffic-vis仅仅适用于SUSE LINUX ENTERPRISE SERVER。 如下命令用来收集网口eth0的信息:

  traffic-collector -i eth0 -s /root/output_traffic-collector

  可以使用killall命令来控制该进程。如果要将报告写入磁盘,可使用如下命令: killall -9 traffic-collector

  要停止对信息的收集,执行如下命令:killall -9 traffic-collector 注意,不要忘记执行后一条命令,否则会因为内存占用而影响性能。 可以根据packets, bytes, TCP连接数对输出进行排序,根据每项的总数或者收/发的数量进行。

  例如根据主机上packets的收/发数量排序,执行命令:

  traffic-sort -i output_traffic-collector -o output_traffic-sort -Hp

  如要生成HTML格式的报告,显示传输的字节数,packets的记录、全部TCP连接请求和网络中每台服务器的信息,请运行命令:

  traffic-tohtml -i output_traffic-sort -o output_traffic-tohtml.html 如要生成GIF格式(600X600)的报告,请运行命令:

  traffic-togif -i output_traffic-sort -o output_traffic-togif.gif -x 600 -y 600 GIF格式的报告可以方便地发现网络广播,查看哪台主机在TCP网络中使用IPX/SPX协议并隔离网络,需要记住的是,IPX是基于广播包的协议。如果我们需要查明例如网卡故障或重复IP的问题,需要使用特殊的工具。例如SUSE LINUX Enterprise Server自带的Ethereal。 技巧和提示:使用管道,可以只需执行一条命令来产生报告。如生成HTML的报告,执行命令: cat output_traffic-collector | traffic-sort -Hp | traffic-tohtml -o output_traffic-tohtml.html 如要生成GIF文件,执行命令:

  cat output_traffic-collector | traffic-sort -Hp | traffic-togif -o output_traffic-togif.gif -x 600 -y 600

  10、pmap

  pmap可以报告某个或多个进程的内存使用情况。使用pmap判断主机中哪个进程因占用过多内存导致内存瓶颈。 pmap <pid>

liyawei:~ # pmap 1 1: init
START SIZE RSS DIRTY PERM MAPPING 08048000 484K 244K 0K r-xp /sbin/init 080c1000 4K 4K 4K rw-p /sbin/init 080c2000 144K 24K 24K rw-p [heap] bfb5b000 84K 12K 12K rw-p [stack] ffffe000 4K 0K 0K ---p [vdso] Total: 720K 284K 40K
232K writable-private, 488K readonly-private, and 0K shared

  11、strace

  strace截取和记录系统进程调用,以及进程收到的信号。是一个非常有效的检测、指导和调试工具。系统管理员可以通过该命令容易地解决程序问题。 使用该命令需要指明进程的ID(PID),例如:

strace -p <pid> # strace –p 2582rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
read(7, ""\"\\\"\\\\\\\"\\\\\\\\\\\\"..., 16384) = 321 write(3, "}H331q37275$271 311M304$317~)R9330Oj304257327"..., 360) = 360
select(8, [3 4 7], [3], NULL, NULL) = 2 (in [7], out [3]) rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
read(7, ""\"\\\"\\\\\\\"\\\\\\\\\\\\"..., 16384) = 323 write(3, "20430327$35206\306VL3705R2002262320^253253"..., 360) = 360
select(8, [3 4 7], [3], NULL, NULL) = 2 (in [7], out [3]) rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
read(7, ""\"\\\"\\\\\\\"\\\\\\\\\\\\"..., 16384) = 323 write(3, "243207204277Cw1622ju=205'L352?0J256I37632"..., 360) = 360 select(8, [3 4 7], [3], NULL, NULL) = 2 (in [7], out [3]) rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
read(7, ""\"\\\"\\\\\\\"\\\\\\\\\\\\"..., 16384) = 320 write(3, "6270S3i310334301253!ys324'234%35630526233"..., 360) = 360 select(8, [3 4 7], [3], NULL, NULL) = 2 (in [7], out [3]) rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0