使用方法:
将脚本保存为 CentOS_syscheck.sh
添加执行权限:
chmod +x CentOS_syscheck.sh
执行脚本:
./CentOS_syscheck.sh
#!/bin/bash
# 设置颜色变量
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
NC='\033[0m' # 重置颜色
# 生成分隔线
separator() {
echo -e "${BLUE}=======================================================${NC}"
}
# 系统基本信息检查
system_info() {
echo -e "\n${GREEN}>>> 系统基本信息检查${NC}"
separator
echo "主机名 : $(hostname)"
echo "操作系统版本 : $(cat /etc/redhat-release)"
echo "内核版本 : $(uname -r)"
echo "当前时间 : $(date "+%Y-%m-%d %H:%M:%S")"
echo "上次启动时间 : $(date -d "$(awk -F. '{print $1}' /proc/uptime) second ago" +"%Y-%m-%d %H:%M:%S")"
echo "系统运行时间 : $(uptime | awk -F, '{print $1}')"
}
# CPU检查
cpu_check() {
echo -e "\n${GREEN}>>> CPU检查${NC}"
separator
echo "CPU型号 : $(lscpu | grep 'Model name' | cut -d':' -f2 | xargs)"
echo "物理核心数 : $(lscpu | grep 'Core(s)' | head -1 | awk '{print $4}')"
echo "逻辑核心数 : $(nproc)"
echo "当前负载 : $(uptime | awk -F 'average:' '{print $2}')"
}
# 内存检查
memory_check() {
echo -e "\n${GREEN}>>> 内存检查${NC}"
separator
free -h | awk '
/Mem/{
print "总内存 : " $2
print "已用内存 : " $3
print "可用内存 : " $7
}
/Swap/{
print "交换分区 : " $2
print "已用交换 : " $3
}'
}
# 硬盘检查
disk_check() {
echo -e "\n${GREEN}>>> 硬盘检查${NC}"
separator
df -h | awk '
BEGIN {
print "挂载点\t\t总大小\t已用\t可用\t使用率"
}
/^\/dev/ {
printf "%-15s %-6s %-6s %-6s %-4s\n", $6, $2, $3, $4, $5
}' | column -t
}
# 网卡检查
network_check() {
echo -e "\n${GREEN}>>> 网络接口检查${NC}"
separator
for interface in $(ip -o link show | awk -F': ' '{print $2}' | grep -v lo); do
echo "接口名称 : $interface"
echo "IP地址 : $(ip -o -4 addr show $interface | awk '{print $4}')"
echo "MAC地址 : $(ip link show $interface | awk '/link\/ether/ {print $2}')"
echo "连接速度 : $(ethtool $interface 2>/dev/null | grep Speed | awk '{print $2}')"
echo "连接状态 : $(ip link show $interface | grep -o 'state [A-Z]*' | awk '{print $2}')"
separator
done
}
# 主函数
main() {
clear
echo -e "\n${YELLOW}====== 开始系统检查 ======${NC}"
system_info
cpu_check
memory_check
disk_check
network_check
echo -e "\n${YELLOW}====== 检查完成 ======${NC}"
}
# 执行主函数
main

注意事项:
需要root权限获取完整的网络接口信息
网络速度检测依赖ethtool工具,如果未安装请执行:
yum install -y ethtool
如果报错./check.sh: /bin/bash^M: bad interpreter: No such file or directory
通常是因为脚本文件中含有 Windows 风格的换行符(CR LF,即 ^M
),而不是 Unix/Linux 系统所需的换行符(LF)。这通常发生在将 Windows 上的脚本文件直接传输到 Linux 系统上时。
sed -i 's/\r$//' CentOS_syscheck.sh
也可以使用 Notepad++ 或其他支持 Unix/Linux 样式的换行符的编辑器打开并保存该文件。
在 Notepad++ 中,你可以通过以下步骤转换换行符:
打开文件,点击顶部菜单的 "编辑" -> "EOL 转换" -> "UNIX/OSX 格式"