내 우분투 컴퓨터의 CPU 사용량을 측정하려고 합니다. CPU 사용량이 60%를 초과하면 어떤 프로세스의 CPU 사용량이 가장 높은지 알아낸 다음 CPU 사용량이 60%를 초과한다는 이메일을 보내야 합니다. CPU 사용률이 가장 높은 프로세스 이름을 가진 프로세스입니다.
정상에 도착하니 이런 모습이 보였습니다.
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
CPU 부하만 확인하고 CPU 사용량은 확인하지 않는 다음 스크립트를 생각해 냈습니다. 위의 목표를 달성하려면 어떻게 해야 합니까?
#!/bin/bash
top -bn1 | grep load | awk '{printf "CPU Load: %.2f\n", $(NF-2)}'
이메일을 보내려면 다음 명령을 사용했는데 효과가 있었습니다.
echo "Body" | mailx -r "[email protected]" -s "SUBJECT" "[email protected]"
답변1
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
위의 코드는 모든 프로그램에 대해 0이 아닌 CPU 사용량을 제공합니다.
당신에게 줄 것이다pid,%cpu, command_name
CPU 사용량을 60보다 크거나 같게 하려면 $3!=0.0
다음으로 바꾸십시오.$3>=60
출력을 파일로 저장했습니다 some_file.txt
. cat
이 파일을 가져와서 mail 명령으로 파이프 할 수 있습니다 .
시도해 보세요: 메일 보내기
cat some_file.txt | mailx -r "[email protected]" -s "SUBJECT" "[email protected]"