#!/bin/bash # ================================================ # 脚本名称: 系统信息查询脚本 # 描述: 查询系统基本信息 # 版本: 1.0 # 作者: OPPEN321 # ================================================ # 颜色定义 RED="\033[1;31m" GREEN="\033[1;32m" YELLOW="\033[1;33m" BLUE="\033[1;34m" CYAN="\033[1;36m" WHITE="\033[1;37m" RESET="\033[0m" ARROW="${BLUE}➤${RESET}" SEP="${CYAN}==============================================${RESET}" print_section() { echo -e "\n${SEP}" echo -e "${GREEN}>>> $1${RESET}" echo -e "${SEP}" } echo -e "${CYAN}=== 系统信息查询脚本 v1.0 ===${RESET}" print_section "CPU 信息" echo -e "${ARROW} CPU 总核心数 : ${WHITE}$(nproc)${RESET}" if [ -f /proc/cpuinfo ]; then echo -e "${ARROW} 型号名称 : ${WHITE}$(grep 'model name' /proc/cpuinfo | head -n1 | cut -d':' -f2 | sed 's/^\s*//')${RESET}" echo -e "${ARROW} 当前频率 : ${WHITE}$(grep 'cpu MHz' /proc/cpuinfo | head -n1 | cut -d':' -f2 | sed 's/^\s*//') MHz${RESET}" echo -e "${ARROW} 缓存大小 : ${WHITE}$(grep 'cache size' /proc/cpuinfo | head -n1 | cut -d':' -f2 | sed 's/^\s*//')${RESET}" echo -e "${ARROW} 架构类型 : ${WHITE}$(lscpu | grep 'Architecture' | cut -d':' -f2 | sed 's/^\s*//')${RESET}" echo -e "${ARROW} 每插槽核心数 : ${WHITE}$(lscpu | grep 'Core(s) per socket' | cut -d':' -f2 | sed 's/^\s*//')${RESET}" echo -e "${ARROW} 每核心线程数 : ${WHITE}$(lscpu | grep 'Thread(s) per core' | cut -d':' -f2 | sed 's/^\s*//')${RESET}" MAX_FREQ=$(lscpu | grep -E 'CPU max MHz|CPU MHz max' | cut -d':' -f2 | sed 's/^\s*//') MIN_FREQ=$(lscpu | grep -E 'CPU min MHz|CPU MHz min' | cut -d':' -f2 | sed 's/^\s*//') echo -e "${ARROW} 最大频率 : ${WHITE}${MAX_FREQ:-未知} MHz${RESET}" echo -e "${ARROW} 最小频率 : ${WHITE}${MIN_FREQ:-未知} MHz${RESET}" else echo -e "${RED}× CPU 信息不可用(/proc/cpuinfo 文件缺失)${RESET}" fi print_section "内存信息" free -h | awk -v arrow="$ARROW" ' $1 ~ /^Mem/ { printf("%s 总内存 : %s\n%s 已使用 : %s\n%s 空闲内存 : %s\n", arrow, $2, arrow, $3, arrow, $4) }' print_section "磁盘信息" df -h | grep -E '^/dev/' | awk -v arrow="$ARROW" ' {printf("%s %-15s 大小: %-7s 已用: %-7s 可用: %-7s 挂载点: %s\n", arrow, $1, $2, $3, $4, $6)}' print_section "网卡信息" if command -v ethtool >/dev/null 2>&1; then for iface in $(ip -br addr show | awk '{print $1}' | grep -v '^lo$'); do STATE=$(ip -br addr show "$iface" | awk '{print $2}') IPADDR=$(ip -br addr show "$iface" | awk '{print $3}') SPEED=$(ethtool "$iface" 2>/dev/null | grep 'Speed:' | awk '{print $2}' || echo "未知") echo -e "${ARROW} 接口名称 : ${WHITE}$iface${RESET}" echo -e "${ARROW} 状态 : ${WHITE}$STATE${RESET}" echo -e "${ARROW} IP 地址 : ${WHITE}$IPADDR${RESET}" echo -e "${ARROW} 速率 : ${WHITE}$SPEED${RESET}" echo -e "${CYAN}----------------------------------------------${RESET}" done else echo -e "${YELLOW}⚠ ethtool 未安装,仅显示基本网卡信息${RESET}" ip -br addr show | awk -v arrow="$ARROW" '{printf("%s 接口: %-10s 状态: %-8s IP: %s\n", arrow, $1, $2, $3)}' fi print_section "资源限制" ulimit -a | while read -r line; do echo -e "${ARROW} $line" done echo -e "\n${GREEN}✅ 系统信息查询完成。${RESET}\n" read -p "按 Enter 键返回..." } # 执行查询 system_cpuinfo