公司要统计服务器信息,nCnGnG(cpu、内存、磁盘),例如:4C8G24G。
统计这些信息的方式有很多,这里不一定是最优,只要能实现就行。

cpu

首先,top可以查看cpu个数,但是不好用命令来筛选,所以排除掉。
这里用lscpu。

显示数据为:

lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                8
On-line CPU(s) list:   0-7
Thread(s) per core:    1
Core(s) per socket:    1
Socket(s):             8
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 79
Model name:            Intel(R) Xeon(R) Gold 5118 CPU @ 2.30GHz
Stepping:              0
CPU MHz:               2294.609
BogoMIPS:              4589.21
Hypervisor vendor:     VMware
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              1024K
L3 cache:              16896K
NUMA node0 CPU(s):     0-7
Flags:                 这里有很多内容,略

最终命令:

lscpu | grep -E "CPU\(s\):" | grep -v node0 | awk '{print $2}'`  # 结果 8

mem

free、free -m等都是可以的,但是发现一个问题,值并不准确,除以1000或1024,整数都不一定能获取到正确的值。
所以用free -g,这个也不准,但是稳定小1,所以加上1就可以完成了。

显示数据为:

free -g
              total        used        free      shared  buff/cache   available
Mem:             23          18           0           1           3           2
Swap:             7           0           7

命令为:

free -g | grep Mem | awk '{print $2+1 }'  # 结果 24

disk

这里用df就可以。

显示数据为:

df -h
Filesystem                 Size  Used Avail Use% Mounted on
devtmpfs                    12G     0   12G   0% /dev
tmpfs                       12G   64K   12G   1% /dev/shm
tmpfs                       12G  1.2G   11G  10% /run
tmpfs                       12G     0   12G   0% /sys/fs/cgroup
/dev/mapper/centos-root     72G   14G   58G  20% /

命令为:

df -h | grep -w / | grep -v :/ | awk '{print $2}' # 结果 72G
注: grep -v :/  是为了排除nas挂载的情况

最终

完整命令为:

cpu=`lscpu | grep -E "CPU\(s\):" | grep -v node0 | awk '{print $2}'`
mem=`free -g | grep Mem | awk '{print $2+1 }'`
disk=`df -h | grep -w / | grep -v :/ | awk '{print $2}'`
echo $cpu''G''$mem''G''$disk

当然,也可以写为脚本。