Poderíamos usar awk
ou sed
ou até grep
com regexes Perl para selecionar apenas o número dessa linha, por exemplo,
$ lscpu | sed -n 's/^Core(s) per socket: *//p'
2
Mas você quer aquele número, o número de núcleos em um soquete? E se você tiver mais de um soquete na máquina:
$ lscpu |grep -i socket
Core(s) per socket: 2
Socket(s): 2
Poderíamos usar awk
para obter os dois números e multiplicá-los:
$ lscpu | awk '/^Core.s. per socket:/ {cores=$NF} /^Socket.s.:/ {sockets=$NF} END {print cores * sockets}'
4
Não tenho certeza se eles contam ou não hyperthreads, e se queremos hyperthreads ou não, mas poderíamos apenas obter o número na linha CPU(s)
:
lscpu | awk '/^CPU.s.:/ { print $NF; exit }'
Ou use nproc
para obter o número total de CPUs no sistema .
$ nproc --all
4