查看并记录服务器硬件信息
2020-05-18 tech linux 16 mins 17 图 5678 字
查了相关的文章做个记录,从CPU、内存、网卡、硬盘、主板、BIOS、操作系统几个方面。
一、硬件
1.1 服务器型号、序列号
dmidecode|grep "System Information" -A9|egrep "Manufacturer|Product|Serial"
1.2 主板型号
dmidecode |grep -A16 "System Information$"
1.3 查看BIOS信息
dmidecode -t bios
1.4 查看内存槽及内存条
dmidecode -t memory | more
1.5 查看主板所有硬件槽信息
lspci # 可列出每个pci总线上的设备, 通过grep过滤后可得到网卡设备列表
1.6 查看网卡信息
lspci | grep -i net
二、CPU
(1)查看 cpu 核数和型号,主频等
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
(2)查看系统有几颗CPU
grep 'physical id' /proc/cpuinfo | sort | uniq | wc -l
1
(3)CPU的逻辑个数(开启超线程时1个core相当于2个逻辑cpu)
cat /proc/cpuinfo |grep 'processor'|wc -l
8
(4)查看每颗 CPU 中的内核个数
cat /proc/cpuinfo |grep "cores"|uniq
cpu cores : 4
(5)查看CPU的主频
cat /proc/cpuinfo |grep MHz|uniq
cpu MHz : 4102.000
cpu MHz : 4105.465
cpu MHz : 4100.059
cpu MHz : 4147.903
cpu MHz : 4100.493
cpu MHz : 4100.521
cpu MHz : 4160.260
cpu MHz : 4138.348
(6)查看CPU的详细信息
cat /proc/cpuinfo
processor : 0 //逻辑处理器的ID
vendor_id : GenuineIntel
cpu family : 6
model : 158
model name : Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz //CPU型号
stepping : 9
microcode : 0x84
cpu MHz : 4070.787
cache size : 8192 KB
physical id : 0
siblings : 8 //相同物理封装处理器中逻辑处理器数
core id : 0
cpu cores : 4 //相同物理封装处理器中的内核数
(7)查看CPU的相关信息
lscpu
(8)查看 cpu 是32位还是64位
[root@Master ~]# getconf LONG_BIT
64
三、内存
free -mh # 概要查看内存情况
dmidecode -t memory # 查看内存硬件信息
dmidecode|grep -P 'Maximum\s+Capacity' # 最大支持多少内存
dmidecode|grep -A5 "Memory Device"|grep Size | grep -v Range # Linux 查看内存已经使用插槽数
dmidecode|grep -A16 "Memory Device"|grep 'Speed' # 内存频率
cat /proc/meminfo |head -20 # 内存详细信息
free -mh # 内存使用情况
四、网卡
ifconfig
ethtool bond0
ethtool bond1
ifconfig -a
ip link show
五、硬盘
lsblk # fdisk一般用来磁盘分区,也可以用来查看磁盘分区情况
fdisk -l # 硬盘和分区的详细信息
# lsblk命令用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系
lsblk
# 其他命令
mount | column -t
swapon -s Filename Type Size Used Priority
df -hT
du --max-depth=1 -ah 2> /dev/null | sort -hr | head
smartctl -a /dev/sda
操作系统
uname -a
cat /etc/redhat-release
dmidecode -s system-serial-number # 系统序列号
一个简单的脚本
#!/usr/bin/env bash
if [ ! -e '/usr/bin/wget' ]; then
echo "Error: wget command not found. You must be install wget command at first."
exit 1
fi
# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
BLUE='\033[0;36m'
PLAIN='\033[0m'
get_opsy() {
[ -f /etc/redhat-release ] && awk '{print ($1,$3~/^[0-9]/?$3:$4)}' /etc/redhat-release && return
[ -f /etc/os-release ] && awk -F'[= "]' '/PRETTY_NAME/{print $3,$4,$5}' /etc/os-release && return
[ -f /etc/lsb-release ] && awk -F'[="]+' '/DESCRIPTION/{print $2}' /etc/lsb-release && return
}
next() {
printf "%-70s\n" "-" | sed 's/\s/-/g'
}
calc_disk() {
local total_size=0
local array=$@
for size in ${array[@]}
do
[ "${size}" == "0" ] && size_t=0 || size_t=`echo ${size:0:${#size}-1}`
[ "`echo ${size:(-1)}`" == "K" ] && size=0
[ "`echo ${size:(-1)}`" == "M" ] && size=$( awk 'BEGIN{printf "%.1f", '$size_t' / 1024}' )
[ "`echo ${size:(-1)}`" == "T" ] && size=$( awk 'BEGIN{printf "%.1f", '$size_t' * 1024}' )
[ "`echo ${size:(-1)}`" == "G" ] && size=${size_t}
total_size=$( awk 'BEGIN{printf "%.1f", '$total_size' + '$size'}' )
done
echo ${total_size}
}
cname=$( awk -F: '/model name/ {name=$2} END {print name}' /proc/cpuinfo | sed 's/^[ \t]*//;s/[ \t]*$//' )
cores=$( awk -F: '/model name/ {core++} END {print core}' /proc/cpuinfo )
freq=$( awk -F'[ :]' '/cpu MHz/ {print $4;exit}' /proc/cpuinfo )
tram=$( free -m | awk '/Mem/ {print $2}' )
uram=$( free -m | awk '/Mem/ {print $3}' )
swap=$( free -m | awk '/Swap/ {print $2}' )
uswap=$( free -m | awk '/Swap/ {print $3}' )
up=$( awk '{a=$1/86400;b=($1%86400)/3600;c=($1%3600)/60} {printf("%d days, %d hour %d min\n",a,b,c)}' /proc/uptime )
load=$( w | head -1 | awk -F'load average:' '{print $2}' | sed 's/^[ \t]*//;s/[ \t]*$//' )
opsy=$( get_opsy )
arch=$( uname -m )
lbit=$( getconf LONG_BIT )
kern=$( uname -r )
#ipv6=$( wget -qO- -t1 -T2 ipv6.icanhazip.com )
disk_size1=($( LANG=C df -hPl | grep -wvE '\-|none|tmpfs|devtmpfs|by-uuid|chroot|Filesystem|udev|docker' | awk '{print $2}' ))
disk_size2=($( LANG=C df -hPl | grep -wvE '\-|none|tmpfs|devtmpfs|by-uuid|chroot|Filesystem|udev|docker' | awk '{print $3}' ))
disk_total_size=$( calc_disk "${disk_size1[@]}" )
disk_used_size=$( calc_disk "${disk_size2[@]}" )
clear
next
echo -e "CPU : ${BLUE}$cname${PLAIN}"
echo -e "核心数 : ${BLUE}$cores${PLAIN}"
echo -e "CPU 主频 : ${BLUE}$freq MHz${PLAIN}"
echo -e "硬盘 : ${BLUE}$disk_total_size GB ($disk_used_size GB Used)${PLAIN}"
echo -e "内存 : ${BLUE}$tram MB ($uram MB Used)${PLAIN}"
echo -e "交换分区 : ${BLUE}$swap MB ($uswap MB Used)${PLAIN}"
echo -e "OS : ${BLUE}$opsy${PLAIN}"
echo -e "Arch : ${BLUE}$arch ($lbit Bit)${PLAIN}"
echo -e "内核 : ${BLUE}$kern${PLAIN}"
echo -e "运行时间 : ${BLUE}$up${PLAIN}"
echo -e "平均负载 : ${BLUE}$load${PLAIN}"
next
附:dmidecode 是什么
dmidecode可以让你在Linux系统下获取有关硬件方面的信息。
dmidecode的作用是将DMI数据库中的信息解码,以可读的文本方式显示。由于DMI信息可以人为修改,因此里面的信息不一定是系统准确的信息。
dmidecode遵循SMBIOS/DMI标准,其输出的信息包括BIOS、系统、主板、处理器、内存、缓存等等。
DMI(Desktop Management Interface,DMI)就是帮助收集电脑系统信息的管理系统,DMI信息的收集必须在严格遵照SMBIOS规范的前提下进行。SMBIOS(System Management BIOS)是主板或系统制造者以标准格式显示产品管理信息所需遵循的统一规范。SMBIOS和DMI是由行业指导机构Desktop Management Task Force(DMTF)起草的开放性的技术标准,其中DMI设计适用于任何的平台和操作系统。
DMI充当了管理工具和系统层之间接口的角色。它建立了标准的可管理系统更加方便了电脑厂商和用户对系统的了解。DMI的主要组成部分是Management Information Format(MIF)数据库。这个数据库包括了所有有关电脑系统和配件的信息。通过DMI,用户可以获取序列号、电脑厂商、串口信息以及其它系统配件信息。