85 lines
3.4 KiB
Bash
85 lines
3.4 KiB
Bash
#!/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
|