之前面试的时候问到用户量,然后扯到了服务器的配置相关,但服务器是都是由组长申请的,所以当时并不了解。回来后,了解了Linux下硬件信息配置的查看,记录如下。
CPU信息有三种方式查看。
一种是直接cat /proc/cpuinfo,会打印出所有CPU的详细信息,单个CPU的信息如下:
[user@VM_0_4_centos debug]$ cat /proc/cpuinfo
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 79
model name : Intel(R) Xeon(R) CPU E5-26xx v4
stepping : 1
microcode : 0x1
cpu MHz : 2399.988
cache size : 4096 KB
physical id : 0
siblings : 2
core id : 1
cpu cores : 2
apicid : 1
initial apicid : 1
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc rep_good nopl eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch bmi1 avx2 bmi2 rdseed adx xsaveopt
bogomips : 4799.97
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
各项的含义如下:
processor :系统中逻辑处理核的编号。对于单核处理器,则课认为是其CPU编号,对于多核处理器则可以是物理核、或者使用超线程技术虚拟的逻辑核
vendor_id :CPU制造商
cpu family :CPU产品系列代号
model :CPU属于其系列中的哪一代的代号
model name:CPU属于的名字及其编号、标称主频
stepping :CPU属于制作更新版本
cpu MHz :CPU的实际使用主频
cache size :CPU二级缓存大小
physical id :单个CPU的标号
siblings :单个CPU逻辑物理核数
core id :当前物理核在其所处CPU中的编号,这个编号不一定连续
cpu cores :该逻辑核所处CPU的物理核数
apicid :用来区分不同逻辑核的编号,系统中每个逻辑核的此编号必然不同,此编号不一定连续
fpu :是否具有浮点运算单元(Floating Point Unit)
fpu_exception :是否支持浮点计算异常
cpuid level :执行cpuid指令前,eax寄存器中的值,根据不同的值cpuid指令会返回不同的内容
wp :表明当前CPU是否在内核态支持对用户空间的写保护(Write Protection)
flags :当前CPU支持的功能
bogomips :在系统内核启动时粗略测算的CPU速度(Million Instructions Per Second)
clflush size :每次刷新缓存的大小单位
cache_alignment :缓存地址对齐单位
address sizes :可访问地址空间位数
我们可以grep需要的信息查看:
cat /proc/cpuinfo | grep "cpu cores" // 查看每个CPU核数
cat /proc/cpuinfo | grep "physical id" | wc -l // 查看CPU个数
第二种是使用lscpu命令,该命令时从sysfs和/proc/cpuinfo收集cpu体系结构信息,命令的输出比较易读 ,如下:
[user@VM_0_4_centos debug]$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 1
Core(s) per socket: 2
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 79
Model name: Intel(R) Xeon(R) CPU E5-26xx v4
Stepping: 1
CPU MHz: 2399.988
BogoMIPS: 4799.97
Hypervisor vendor: KVM
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 4096K
NUMA node0 CPU(s): 0,1
我们可以看到CPU数量("CPU(s)")、每个CPU核数("Core(s) pre socket")、大小端信息("Byte Order")和CPU架构("Architecture")。另外还有支持的操作模式("CPU op-mode(s)")应该就是指支持32位及64位指令集,可否运行32位操作系统及64位操作系统吧,其中64-bit也叫Long mode。
第三种就是dmidecode命令,"sudo dmidecode -t processor"就可以指定查看CPU相关的信息。
内存信息有三种方式可以查看。
第一种是通过/proc/meminfo文件查看,"cat /proc/meminfo"就可以打印,内容比较长,并且可读性不太好,这里只贴出一部分内容。我们也可以通过grep命令提取出我们需要的内容打印出来。
[user@VM_0_4_centos debug]$ cat /proc/meminfo
MemTotal: 3882032 kB
MemFree: 126164 kB
MemAvailable: 2288044 kB
Buffers: 115860 kB
Cached: 2834888 kB
SwapCached: 0 kB
Active: 1906908 kB
Inactive: 1581564 kB
Active(anon): 815556 kB
Inactive(anon): 387800 kB
Active(file): 1091352 kB
Inactive(file): 1193764 kB
Unevictable: 4748 kB
...
第二种是free命令,显示的内容很少:
[user@VM_0_4_centos debug]$ free
total used free shared buff/cache available
Mem: 3882032 616920 147440 660756 3117672 2289708
Swap: 0 0 0
[user@VM_0_4_centos debug]$ free -h
total used free shared buff/cache available
Mem: 3.7G 604M 136M 645M 3.0G 2.2G
Swap: 0B 0B 0B
最后一个是dmidecode命令,使用"sudo dmidecode -t memory"即可打印内存相关的信息:
[user@VM_0_4_centos debug]$ sudo dmidecode -t memory
# dmidecode 2.12-dmifs
SMBIOS 2.4 present.
Handle 0x1000, DMI type 16, 15 bytes
Physical Memory Array
Location: Other
Use: System Memory
Error Correction Type: Multi-bit ECC
Maximum Capacity: 4 GB
Error Information Handle: Not Provided
Number Of Devices: 1
Handle 0x1100, DMI type 17, 21 bytes
Memory Device
Array Handle: 0x1000
Error Information Handle: 0x0000
Total Width: 64 bits
Data Width: 64 bits
Size: 4096 MB
Form Factor: DIMM
Set: None
Locator: DIMM 0
Bank Locator: Not Specified
Type: RAM
Type Detail: None
查看上面三个命令的输出结果,可以看到/proc/meminfo文件和free命令的结果是一样的,但是比dmidecode的值要小。即可见内存要比实际内存小,这是因为系统从加电开始到引导完成,firmware/BIOS要保留一些内存,kernel本身要占用一些内存,最后剩下可供kernel支配的内存才是MemTotal的值。
所以我们要看系统可用内存应该用前两种方式,看硬件配置的实际内存要用第三种方式。
硬盘信息可以用fdisk命令查看,输出如下:
[user@VM_0_4_centos debug]$ sudo fdisk -l
Disk /dev/vda: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0005fc9a
Device Boot Start End Blocks Id System
/dev/vda1 * 2048 104857566 52427759+ 83 Linux
Disk /dev/vdb: 536.9 GB, 536870912000 bytes, 1048576000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
如果我们要查看硬盘各个分区的使用情况,可以用df命令:
[user@VM_0_4_centos debug]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 50G 46G 1.3G 98% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 24K 1.9G 1% /dev/shm
tmpfs 1.9G 1.4M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
tmpfs 380M 0 380M 0% /run/user/0
tmpfs 380M 0 380M 0% /run/user/1001
/dev/vdb 493G 232G 236G 50% /home/user/log
如果想看当前目录下目录的大小,可以用du命令,-d选项用来设置递归显示的深度,1时只所有子目录的大小,2时则会显示子目录的子目录的大小,以此类推:
[user@localhost conf]$ du -h -d 1
100K ./svr
96K ./comm
196K .
[user@localhost conf]$ du -h -d 2
100K ./svr
56K ./comm/words
96K ./comm
196K .
网卡信息有两种方式查看。
第一种方式先用ifconfig找到要查看的显卡,然后再用ethtool命令查看网卡信息,ethtool输出如下:
[user@localhost comm_conf]$ ethtool ens33
Settings for ens33:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
MDI-X: off (auto)
Cannot get wake-on-lan settings: Operation not permitted
Current message level: 0x00000007 (7)
drv probe link
Link detected: yes
上面的Speed项就是网卡的速率。
第二种方式就是lspci命令,该命令可以看到所有通过PCI接口接入的设备,我们grep出Ethernet相关的即可,输出如下:
02:01.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)
输出中的Gigabit代表这是千兆的,与上面的1000Mb/s是一致的。
注意,对于云服务器,上面的两个命令都得不到信息的。