Encontre o processo que está levando o uso máximo da CPU se o uso da CPU for maior que 60%?

1
Estou tentando medir o uso de CPU da minha máquina Ubuntu e se o uso da CPU for superior a 60%, então eu preciso descobrir o processo que tem o maior uso da CPU e, em seguida, enviar um e-mail dizendo que o uso da CPU é mais de 60% e com o nome do processo que tem o maior uso de CPU.

Quando eu faço top isso é o que eu vejo.

Cpu0  :  20.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  :  34.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2  :  17.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  :  20.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Eu criei o script abaixo que apenas descobre a carga da CPU, mas não o uso da CPU. Como faço para conseguir algo acima?

#!/bin/bash

top -bn1 | grep load | awk '{printf "CPU Load: %.2f\n", $(NF-2)}' 

Para enviar um email, eu uso o comando abaixo e funciona para mim -

echo "Body" | mailx -r "[email protected]" -s "SUBJECT" "[email protected]"
    
por david 05.11.2014 / 23:06

1 resposta

3

usando o awk:

ps aux --sort=-%cpu | awk 'NR==1{print $2,$3,$11}NR>1{if($3!=0.0) print $2,$3,$11}' > some_file.txt

o código acima dará a todo o programa um uso de cpu diferente de zero.
você receberá pid,%cpu, command_name

se você quiser que o uso de cpu seja maior que 60, substitua $3!=0.0 a $3>=60

Salvei a saída no arquivo some_file.txt . você pode cat o arquivo e canalizá-lo para o comando mail.

tente assim: enviar email

cat some_file.txt | mailx -r "[email protected]" -s "SUBJECT" "[email protected]"
    
por 05.11.2014 / 23:34