Linux系统本身就有很多支持监控的命令,这些监控指令能够得到系统活动的当前状态,如果用好这些指令,能很容易的发现性能问题点。下面讨论的命令对于分析系统运行状态、调试服务来说是最基本的命令,能够解决:
top - Process Activity Command
vmstat - System Activity, Hardware and System Information
w - Find Out Who Is Logged on And What They Are Doing
uptime - Tell How Long The System Has Been Running
ps - Displays The Processes
free - Memory Usage
iostat - Average CPU Load, Disk Activityiostat –c和-d参数分别使用,可以得到CPU、IO统计信息的设备的统计信息。
iostat -d interval count以interval执行iostat –d命令,执行count次,观察一段时间的io统计情况。实际上,统计信息来自于这四个文件/proc/stat、/proc/partitions、/proc/diskstats、/proc/uptime等。在/proc/文件下有很多系统的统计信息,其实可以直接从这里的文件里面找到这些信息。
sar - Collect, report, or save system activity information.
sar命令获得系统的运行信息,-b、-d、-u等参数能够得到系统的paging stat、block device stat、CPU Utilization。同样有interval和count参数供使用
mpstat - Multiprocessor Usage
mpstat –P参数表示选择那几个核心的CPU统计信息。默认是统计all的信息。如果使用mpstat –p ALL则表示统计all和各个cpu的统计。添加interval和count参数可以观察一段时间内的CPU运行情况,在这点上貌似确实比TOP好用
pmap - Process Memory Usage
pmap pid可以得到程序的Memory Used,这个得到的是MemoryMap,得到的貌似是应用用到的各个模块的地址,最后来个total信息。加上-x参数能够得到模块的加载区大小,默认是Kbyte。
netstat and ss - Network Statistics
这个命令可是个利器,根据man的描述Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships可见该命令的强大之处。-t=tcp、-u=udp、-w=raw、-l=listening、-n=numeric、-a=all、-p=pid、-a=all、-s=stat,其中-s的信息最全,能够得到TCP、UDP、LISTENING、IP、ICMP各种协议的统计信息。这个命令的熟练使用也是linux网络查问题的基本功之一。更详细的统计信息可以参看这里:http://www.thegeekstuff.com/2010/03/netstat-command-examples/或者man一下
ss命令为Display Linux TCP / UDP Network and Socket Information,这个更关注TCP、UDP以及Socket信息,参数和netstat类似。
iptraf - Real-time Network Statistics
这个命令没有用过,不好说用途,不过看文档的话,是IP LAN 监控信息。细节可以见这里:http://www.linuxcommand.org/man_pages/iptraf8.html
tcpdump - Detailed Network Traffic Analysis
strace - trace system calls and signals
mtr:a network diagnostic toolmtr combines the function of traceroute and ping,是一种通过界面操作的网络诊断工具。其实这个命令相当于traceroute和ping命令的组合,可以通过界面的方式得到统计结果。统计的内容更多:LDRSNBAWVGJMXI这些参数各有不同的统计,参数太多不多做解释,反正是上面两个命令能统计到的这个命令都能统计,还是以一种连续的方式统计,更加直观 。