公司要统计服务器信息,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
当然,也可以写为脚本。