Problema com if com variavel decimal

1. Problema com if com variavel decimal

Morpheus
Minions

(usa Nenhuma)

Enviado em 23/07/2023 - 18:02h


criar um script que calcula o uso de cpu

var1="10"

gera valor decimal ou espaço em branco/tabulação

var2=$(top -bn1 | awk '/CPU/ { print $2}' | head -n1 | grep -vi usuario | cut -d, -f1 | grep -v '^[\s\t]*$')


Esperava expressão de número inteiro

if [ "$var2" -ge "$var1" ] ; then

....


  


2. Re: Problema com if com variavel decimal

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 23/07/2023 - 18:02h

{
"error": {
"message": "We could not parse the JSON body of your request. (HINT: This likely means you aren't using your HTTP library correctly. The OpenAI API expects a JSON payload, but what was sent was not valid JSON. If you have trouble figuring out how to fix this, please contact us through our help center at help.openai.com.)",
"type": "invalid_request_error",
"param": null,
"code": null
}
}



3. Re: Problema com if com variavel decimal

Morpheus
Minions

(usa Nenhuma)

Enviado em 23/07/2023 - 18:04h

@alexabolada

criar um script que calcula o uso de cpu.


4. Re: Problema com if com variavel decimal

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 23/07/2023 - 18:04h

Olá! Vamos criar um script simples usando a linguagem de programação shell para calcular o uso da CPU. Vou usar o comando top juntamente com alguns outros comandos para extrair a informação necessária. Vamos lá:

Primeiro abra o terminal e crie um novo arquivo chamado uso_cpu.sh. Você pode usar o Vim para isso.

$ vim uso_cpu.sh

Agora, insira o seguinte código em seu script:


#!/bin/bash
CPU_P=`top -b -n1 | grep "Cpu(s)" | awk '{print $2 + $4}'`
echo "A CPU está sendo utilizada em $CPU_P %"


Esse script irá retornar a porcentagem de uso da CPU. O top-b -n1 exibe os processos uma vez em formato de lote. grep "Cpu(s)" busca a linha que contém o uso da CPU e o comando awk '{print $2 + $4}' soma os valores de uso da CPU user e system.

Por último, dê permissões de execução para o script.

$ chmod +x uso_cpu.sh

Agora você pode executar o script para ver o uso da sua CPU em tempo real.

[b]$ ./uso_cpu


5. Re: Problema com if com variavel decimal

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 23/07/2023 - 20:51h

Minions escreveu:
criar um script que calcula o uso de cpu

var1="10"
gera valor decimal ou espaço em branco/tabulação
var2=$(top -bn1 | awk '/CPU/ { print $2}' | head -n1 | grep -vi usuario | cut -d, -f1 | grep -v '^[\s\t]*$')
Esperava expressão de número inteiro
if [ "$var2" -ge "$var1" ] ; then
....

Boa noite Minions.
O problema está na variável:
top -bn1 | awk '/CPU/ { print $2}'
USUARIO

----------------------------------------
Sugestão:
ps -eo %cpu|awk '{m+=$1;}END{printf "CPU usada:%s%%\n",m}']
CPU usada:63.6%
Com Condicional
ps -eo %cpu|awk -v l=50 '{m+=$1;}END{printf "Uso:%s%%\n",m;if(m>l) printf "Maior que %s\n",l;else printf "Menor que %s\n", l}'

______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/ | sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________



6. Re: Problema com if com variavel decimal

aguamole
aguamole

(usa KUbuntu)

Enviado em 23/07/2023 - 21:53h

@alexabolada qual é o comando qui é usado para repetir o mesmo comando, geralmente a cada 2seg e não precisa usar while e for?


7. Re: Problema com if com variavel decimal

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 23/07/2023 - 21:53h

Olá! Acredito que o comando que você está procurando é o watch.

O comando watch é utilizado para executar um comando particular periodicamente e mostra a saída na tela. O padrão é a cada 2 segundos, mas você pode definir o intervalo.

Aqui está um exemplo de uso:

watch ls

Este comando executará o ls a cada 2 segundos.

Caso queira alterar o intervalo de tempo, você pode usar a opção -n. Por exemplo, para executar o ls a cada 5 segundos, você usaria:

watch -n 5 ls

Espero ter ajudado!


8. Re: Problema com if com variavel decimal

Paulo
paulo1205

(usa Ubuntu)

Enviado em 26/07/2023 - 03:12h

O Bash não faz aritmética de ponto flutuante nativamente.

Uma solução de contorno muito comum é usar comandos externos, tais como awk ou bc para efetuar os cálculos e imprimir os resultados em uma construção que intercepte a saída impressa, quer seja com algo como `awk "{ print $dividendo/$divisor }"` ou $(echo "$dividendo/$divisor" | bc -l).

O problema com essa abordagem é que cada conta feita dessa maneira provoca a criação de um ou mais pipes e de um ou mais processos novos, e a invocação de comandos externos. Isso geralmente é mais custoso do que seria fazer a conta dentro do próprio shell, principalmente se ocorrer muitas vezes dentro de laços de repetição.

Uma abordagem que eu acho mais interessante é usar um outro shell para scripts que precisem de aritmética de ponto flutuante. O ksh93, por exemplo, suporta ponto flutuante nativamente, e tem um conjunto de recursos muito parecido com o do Bash (com vantagens e desvantagens, como quase tudo na vida). Usar ksh93 é uma abordagem que eu já cheguei a usar algumas vezes, e recomendo se você pretende continuar programa usando shell como base.

Outro shell com suporte a ponto flutuante é o zsh. Eu, contudo, nunca o usei para valer, então não recomendo nem desencorajo seu uso. Deixo para quem o conhece melhor. Posso dizer, porém, que, nos breves testes que fiz com zsh para alguns scripts meus, o desempenho do ksh93 foi sempre superior ao do zsh.

Alternativas potencialmente melhores e mais poderosas seriam outras linguagens de scripts e RAD, tais como o próprio awk ou possivelmente Perl, Python, TCL ou qualquer outra que você queira.

Eu sou “perleiro”. Apesar de Perl ser uma linguagem tida como feia (ou pelo menos mais feia do que Python — no que eu concordo), eu me acostumei com ela numa época em que ela era o motor dos sites interativos na Internet, e PHP e Python não havia nem sido ainda inventados.. Tem postagens minhas aqui na comunidade mostrando, por exemplo, como um script em Perl ficou 1500 vezes mais rápido do que em shell mal escrito, e 30 vezes mais rápido do que em shell bem escrito (https://www.vivaolinux.com.br/topico/Shell-Script/Como-criar-um-script-para-localizar-varias-palavra...).

Shell é legal para orquestração de comandos externos, inclusive pelo meio do extraordinário recurso de fazer pipelines. Para processamento matemático ou mais pesado, no entanto, claramente não é uma ferramenta muito adequada.


... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts