0

How to write script monitoring cpu and memory usage then prints a warning when usage is 70% (red warning)?

EDIT:

cpuUsage=$(top -bn1 | awk '/Cpu/ { print $2}')
memUsage=$(free -m | awk '/Mem/{print $3}')
echo "CPU Usage: $cpuUsage%"
echo "Memory Usage: $memUsage%"
if [ "$cpuUsage" -ge 70]; then
echo -e "The system is not utilizing"

It keeps giving me 0% usage of CPU and message isn't printed

  • Welcome to AskUbuntu! Have you seen the answers [to this question](https://askubuntu.com/q/56266/1222991)? If so could you [edit] your question to state what you've already tried and what challenges you're facing? As it stands, this looks like a homework question – matigo Apr 19 '23 at 09:15
  • I tried few things, i will edit my question – linuxnoobie Apr 19 '23 at 09:22

1 Answers1

1

Python:

#!/usr/bin/env python3
import psutil
import time

threshold = 70 # percent

def beep():
  print('***[ BEEP ]***')

while(1):
  cpu_pc = psutil.cpu_percent()
  mem_pc = psutil.virtual_memory().percent
  print(f'cpu: {cpu_pc}%; mem: {mem_pc}%')
  if cpu_pc >= threshold or mem_pc >= threshold:
    beep()

  time.sleep(0.5)

Bash:

cpuUsage=$(top -bn1 | awk '/Cpu/ { print $2}')
memTotal=$(free -m | awk '/Mem/{print $2}')
memUsage=$(free -m | awk '/Mem/{print $3}')
memUsage=$(( (memUsage * 100) / memTotal ))
echo "CPU Usage: $cpuUsage%"
echo "Memory Usage: $memUsage%"
if (( $(echo "$cpuUsage >= 70" |bc -l) )); then
  echo -e "The system is not utilizing"
fi

For example, on my nettop, the second solution produced this:

zenbooster@zenpc:~$ ./usage.sh
CPU Usage: 1.2%
Memory Usage: 63%
zenbooster
  • 11
  • 3