分析系统资源性能瓶颈脚本
一、脚本功能:
1.查看CPU利用率与负载(top、vmstat、sar),脚本中采用vmstat
2.查看磁盘、Inode利用率与I/O负载(df、iostat、iotop、sar、dstat),脚本中采用df、iostat
3.查看内存利用率(free、vmstat),脚本中采用free
4.查看TCP连接状态(netstat、ss),脚本中采用ss
5.查看CPU与内存占用最高的10个进程(tcp、ps),脚本中采用ps
6.查看网络流量(ifconfig、iftop、iptraf),脚本中采用ifconfig
二、脚本内容:
vim show_sys_info.sh
#!/bin/bash #show system information os_check(){ #检查linux系统版本 #检查系统类型 if [ -e /etc/redhat-release ];then #如果存在/etc/redhat-release文件,则获取文件内容 REDHAT=`cat /etc/redhat-release |cut -d' ' -f1` #获取/etc/redhat-release文件内容并以空格进行分割后获取第一列的数据 else #如果不存在/etc/redhat-release文件,则获取/etc/issue 文件的内容,红帽版本和德班版本都有这个文件,红帽班这个文件不存系统类型,德班存在 DEBIAN=`cat /etc/issue |cut -d' ' -f1` #获取//etc/issue文件内容并以空格进行分割后获取第一列的数据 fi #根据系统类型选择包管理(红帽为yum,德班为apt-get) if [ "$REDHAT" == "CentOS" -o "$REDHAT" == "Red" ] ;then #如果是centos系统或者red系统,则使用yum 为包管理 P_M=yum elif [ "$DEBIAN" == "Ubuntu" -o "$DEBIAN" == "ubuntu" ] ;then #如果是Ubuntu系统或者ubuntu系统,则使用apt-get 为包管理 P_M=apt-get else #否则答应系统不存在,程序退出,返回1(语句执行成功后,正常应该返回0.此处为异常返回,自定义返回值1) echo "Operating system does not support." exit 1 fi } account_check(){ #判断是否为root用户 if [ "$LOGNAME" != "root" ];then #系统变量$USER或者$LOGNAME都表示当前用户名,如果当前用户名不是root,则提示要用root用户并且退出,返回值2 echo "Please use the root account operation." exit 2 fi } account_check #调用用户检查函数 vmstat_check(){ #检查指定的应用(vmstat)是否安装,如果没有则进行安装 which vmstat &>/dev/null #执行which,命令查看执行的vmstat($1为函数的第一个位置参数,例如:如果为vmstat应用,则函数第一个位置参数传递vmstat) #&>/dev/null为将执行的which命令后输出的结果重定向到垃圾桶中,即不显示输出的结果 #如果存在应用,则命令执行后的返回值为0.否则返回不是0 #vmstat为显示内存使用情况的工具,一般系统自带, if [ $? -ne 0 ];then # $?表示上一条命令的执行后的返回值,如果上一条命令执行后的返回值不是0,则说明没有找到该应用,进行安装 echo "vmstat command not found, now the install." #打印说明 sleep 1 #睡1秒 os_check #调用系统检查函数,函数中定义的变量默认为全局变量,如果不希望是全局变量,则需要用local 定义变量 $P_M install procps -y #安装procops,即可以找到vmstat fi } vmstat_check #调用vmstat检查函数 iostat_check(){ #检查指定的应用(vmstat)是否安装,如果没有则进行安装 which iostat &>/dev/null #执行which,命令查看执行的iostat($1为函数的第一个位置参数,例如:如果为vmstat应用,则函数第一个位置参数传递vmstat) #&>/dev/null为将执行的which命令后输出的结果重定向到垃圾桶中,即不显示输出的结果 #如果存在应用,则命令执行后的返回值为0.否则返回不是0 #iostat为监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息,一般系统不自带,需要安装 if [ $? -ne 0 ];then # $?表示上一条命令的执行后的返回值,如果上一条命令执行后的返回值不是0,则说明没有找到该应用,进行安装 echo "iostat command not found, now the install." #打印说明 sleep 1 #睡1秒 os_check #调用系统检查函数,函数中定义的变量默认为全局变量,如果不希望是全局变量,则需要用local 定义变量 $P_M install sysstat -y #安装sysstat,即可以找到iostat fi } iostat_check #调用iostat检查函数 #定义颜色变量 W_C_Red="