Linux基础信息获取

Posted by Epoch Blog on December 9, 2021

CPU核数相关

CPU总核数 = 物理CPU个数 * 每颗物理CPU的核数 总逻辑CPU数 = 物理CPU个数 * 每颗物理CPU的核数 * 超线程数

1
2
3
4
5
6
7
8
9
10
11
12
#查看物理核数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
2 
# 查看CPU信息(型号),2代表逻辑核数
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 
      2  Intel(R) Core(TM) i9-10900 CPU @ 2.80GHz号
#查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq
cpu cores	: 1
#查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l
2

获取主机IP相关

命令hostname

1
2
3
[root@base ~]# hostname -i
fe80::6522:76a1:e6d6:a8e9%ens33 192.168.19.134
//ifconfig -a

命令ifconfig

1
ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"

命令解析

  • ifconfig -a      和window下执行此命令一样道理,返回本机所有ip信息
  • grep inet   截取包含ip的行
  • grep -v 127.0.0.1 去掉本地指向的那行
  • grep -v inet6 去掉包含inet6的行
  • awk { print $2} $2 表示默认以空格分割的第二组 同理 $1表示第一组
  • tr -d “addr: 删除”addr:”这个字符串

多网卡情况

倘若有多个网卡,可能会出现多个不同网段的IP,这个时候如果还是执行上述命令就会返回多个IP,如下:

假设某个机器有192...8和10...*网段的IP,现在要实现不同网段的IP地址打印不同的输出,shell脚本如下

1
2
3
#!/bin/sh
ip=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"​`
echo $ip

使用ipaddr

1
ip addr | ``awk` `'/^[0-9]+: / {}; /inet.*global/ {print gensub(/(.*)\/(.*)/, "\\1", "g", $2)}'

网卡相关

1
2
3
4
#查看网卡信息
[root@base ~]#  dmesg | grep -i eth
[    2.335832] e1000 0000:02:01.0 eth0: (PCI:66MHz:32-bit) 00:0c:29:50:51:3b
[    2.335837] e1000 0000:02:01.0 eth0: Intel(R) PRO/1000 Network Connection