Como determinar o número de processadores em shell script?

Iniciado por Darcamo, 20 de Julho de 2010, 09:13

tópico anterior - próximo tópico

Darcamo

Não sei quase nada de shell script e o máximo que faço é escrever uma sequência de comandos em um arquivo para automatizar algo.

Estou querendo automatizar alguns passos que precisam ser feitos antes de eu compilar um programa aqui. Nada complicado, apenas criar uma pasta, copiar uns arquivos e chamar o make para fazer o resto. O make permite que você especifique o número de jobs para compilar múltiplos arquivos ao mesmo tempo ("make -j 2" para usar dois jobs, por exemplo). Isso acelera bastante a compilação, mas o ideal é que o número de jobs seja igual ao número de processadores na máquina.

Existe uma maneira de pegar o número de cores em shell script para que eu possa passar para o make?

jeflui

Essa informação você consegue no /proc/cpuinfo tem "cpu cores"

Kamei Hyoga

Baseado no que o jeflui, acho que ficaria algo do tipo:


cat /proc/cpuinfo | grep "cpu cores" | awk '{print $3}'


Não testei, porque aqui só tem um core e essa informação (cpu core) não aparece.

jeflui

Quase isso.
grep -m 1 "cpu cores" /proc/cpuinfo | awk '{print $4}'

irtigor

Ou ainda: cat /proc/cpuinfo | awk '/^cpu cores/ {print $NF}'
Acho que você vai ter que filtrar o resultado com head -1, awk 'NR>1{exit};1' ou coisa parecida.

Darcamo

Excelente. Muito obrigado.

O resto do script é básico (uso de if, atribuir valores variáveis, etc.) e devo conseguir me virar lendo algum texto introdutório de shell script.
Vou anotar aqui para aprender a usar um pouco o awk quando puder. Parece ser bem poderoso.  ;D