Linux服务器巡检脚本

#!/bin/bash
#@Filename: linux-check-v1.sh
#@author: dsys
#@Description: Linux服务器巡检脚本
#@E-mail: dsyslove@163.com
#绿色打印正常状态
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
source /etc/profile
[ $(id -u) -gt 0 ] && echo "请用root用户执行此脚本!" && exit 1
MEMORY_LIMIT=70
DISK_LIMIT=70
CPU_LOAD_LIMIT=$(grep 'physical id' /proc/cpuinfo | sort | uniq | wc -l)
function GRE(){
 echo -e "\033[36m$@\033[0m"
}
#红色打印异常状态
function RED(){
 echo -e "\033[31m$@\033[0m"
}
function OS_INFO(){
  GRE 主机名:`hostname`
  if [-e /etc/redhat-release];then
     GRE 操作系统版本: `cat /etc/redhat-release`
  else
     GRE 操作系统版本信息: `cat /etc/os-release`
  fi
  GRE 运行信息:`uptime` 当前时间:`date +"%Y-%m-%d %H:%M:%S"`
  GRE 主机序号:`dmidecode -t system | grep 'Serial Number' | awk '{print $3}'`
  GRE 系统语言:`echo $LANG`
  GRE 上次关机时间:`last -x | grep shutdown | head -1 | awk '{print $5,$6,$7,$8,$10}'`
  GRE 上次重启时间:`last reboot | head -1 | awk '{print $5,$6,$7,$8,$10}'`
  GRE 机器IP: `ifconfig |grep 'inet ' |awk {'print$2'}|grep -v '127.0.0.1'`
}
function MEMORY_INFO(){
      # 获取内存信息(单次获取避免数据不一致)
	mem_info=$(free -m | awk '/Mem/ {print $2, $7}') # 提取总内存和可用内存
	read MEM_TOTAL MEM_AVAILABLE <<< $mem_info
    # 计算内存使用率(基于可用内存更准确)
	MEM_USED=$((MEM_TOTAL - MEM_AVAILABLE))
	PERCENT=$(( (MEM_USED * 100) / MEM_TOTAL ))
	PERCENT_STR="${PERCENT}%"
    if [[ $PERCENT -lt $MEMORY_LIMIT ]]; then
       GRE "总内存: ${MEM_TOTAL}M | 可用内存: ${MEM_AVAILABLE}M | 使用率: $PERCENT_STR"
    else
       RED "总内存: ${MEM_TOTAL}M | 可用内存: ${MEM_AVAILABLE}M | 使用率: $PERCENT_STR"
    fi
}
function DISK_INFO(){
   df -ah | awk 'NR==1 || ($5~/[0-9]+%/) && ($1!~/^tmpfs$/ && $1!~/^devtmpfs$/)' | column -t
   df -ah | awk 'NR>1 && ($5~/[0-9]+%/) && ($1!~/^tmpfs$/ && $1!~/^devtmpfs$/)' | while IFS= read -r line; do
        MOUNT_POINT=$(echo "$line" | awk '{print $NF}')
        USE=$(echo "$line" | awk '{print $5}' | tr -d '%')
        if (( $(echo "$USE > $DISK_LIMIT"|bc -l) ));then
                RED $MOUNT_POINT 当前使用磁盘占有率$USE%过高,超过了70%
        else
                continue
        fi
  done
}
function CPU_INFO(){
  GRE CPU型号:`grep 'model name' /proc/cpuinfo | uniq | awk -F":" "{print $2}"`
  cpu_type=$(grep 'model name' /proc/cpuinfo | uniq | awk -F":" '{print $2}') #CPU型号
  cpu_arch=$(uname -m) #CPU架构
  cpu_number_physical=$(grep 'physical id' /proc/cpuinfo | sort | uniq | wc -l) #物理CPU数
  cpu_number_vir=$(grep 'processor' /proc/cpuinfo | wc -l) #逻辑CPU数
  cpu_cores=$(grep 'cores' /proc/cpuinfo | uniq | awk -F":" '{print $NF}' ) #每CPU核心数
  GRE 物理核心:$cpu_number_physical,逻辑核心数:$cpu_number_vir,每CPU核心数:$cpu_cores,架构:$cpu_arch
  LOAD=$(cat /proc/loadavg | awk '{print $3}')
  if (( $(echo "$LOAD > $CPU_LOAD_LIMIT" | bc -l) )); then
          echo $LOAD
          RED 当前CPU物理核心数为$CPU_LOAD_LIMIT,系统15分钟内CPU平均负载为$LOAD,CPU使用率过高
  fi
}
function PROCESS_INFO(){
  echo "检测进程状态"
}
function report(){
  OS_INFO
  CPU_INFO
  MEMORY_INFO
  DISK_INFO
}
report
文章作者: 热心网民詹Sir
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 编程之家
Linux命令 性能
喜欢就支持一下吧