Isso deve funcionar:
(awk '{printf "%s/", $2}' /proc/loadavg; grep -c processor /proc/cpuinfo;) | bc -l
Além disso, você deve obter a carga de /proc/loadavg
, onde o comando uptime
também a obtém.
Eu gostaria de saber a carga do servidor dividida pela quantidade de núcleos da CPU para julgar quais servidores estão sobrecarregados. Eu posso obter a quantidade de núcleos da CPU com:
$ grep -c processor /proc/cpuinfo
2
Eu posso carregar o servidor com:
$ uptime | awk '{print $11}'
0.47,
Agora, gostaria de dividir 0.47/2
para obter 0.23
. Como eu saberia qual página de manual ler para fazer isso? Estou realmente procurando como posso aprender qual é o próximo passo para encontrar o comando correto, não estou pedindo o comando em si.
Eu tentei pesquisar a pergunta on-line e até mesmo o Google não conseguiu me orientar na direção certa. Assim, alternativamente, quais palavras-chave devo pesquisar? O óbvio "linux, division, bash, output" não ajudou.
Apenas faça scripts de bash.
Obtenha os dois valores para duas variáveis diferentes.
Então, usando o comando bc
, divida um do outro. Simples assim.
decimal_places=2
dc <<< "${decimal_places}k $(uptime | awk '{print $11}'| cut -d"," -f1) $(grep -c processor /proc/cpuinfo) /p"
Esta resposta usa $()
no bash, portanto, nenhuma variável temporária é necessária.
Também usa dc, uma calculadora. Nós dc dc a precisão usando k
, em seguida, dar-lhe 2 números, em seguida, pedir-lhe para dividi-los e imprimir a resposta.
Ksh e zsh têm aritmética de ponto flutuante. Outras shells, incluindo o bash, têm apenas aritmética inteira (limitada a 32 bits ou 64 bits).
A página man de cada shell tem uma seção sobre aritmética. Se você quiser cálculos de ponto flutuante, será mais difícil encontrá-lo. A principal maneira de procurar páginas man é o comando apropos
, que pesquisa as páginas de uma linha descrições. Já que você está atrás de algo para usar a partir do shell, você quer seção 1. apropos -s 1 float
vira nada relevante na minha máquina Linux. O que acaba funcionando é
$ apropos -s 1 calculator
bc (1) - An arbitrary precision calculator language
dc (1) - an arbitrary precision calculator
A web tem muito mais recursos para oferecer. Na primeira página do link , localizei Como fazer inteiro & cálculos de flutuação, em bash ou outras linguagens / frameworks? e agora sua pergunta (e também vários tópicos Stack Overflow ). O link fornece vários threads SO, sendo o segundo . Você também pode pesquisar no Unix Stack Exchange que tem uma pergunta marcada com bash calculadora e agora também ponto flutuante : < a href="https://unix.stackexchange.com/questions/40786/how-to-do-integer-float-calculations-in-bash-or-other-languages-frameworks"> Como fazer inteiro & cálculos de flutuação, em bash ou outras linguagens / frameworks?
Uma escolha comum para cálculos de ponto flutuante ou de números inteiros grandes é bc
. É um utilitário clássico do Unix que foi padronizado .
Outro utilitário padrão que pode fazer computação de ponto flutuante e talvez seja mais fácil de começar do que o modelo baseado em precisão da bc é o awk . Enquanto o awk é projetado principalmente para processamento de texto, ele também pode fazer cálculos de ponto flutuante.