Esiste un'app che mi notificherà (nel centro notifiche) se un processo utilizza un'alta percentuale di CPU per un determinato periodo di tempo?

7

L'altro giorno ero seduto in un bar che lavorava, quando ho guardato in basso per scoprire che il 25% della mia batteria era rimasto.

Ho guardato il mio Monitor attività e ho visto che il processo della macchina del tempo andava al 90% per un po '(finché lo stavo guardando).

Esistono app in grado di notificarmi se un processo si trova a un certo livello per un certo periodo di tempo?

    
posta Taylor Smith 02.05.2013 - 06:23
fonte

1 risposta

5

Potresti eseguire uno script come questo ogni minuto con cron o launchd:

#!/bin/bash

cpulimit=50
prefix=${TMPDIR}cron_cpu
current=$(ps -erco %cpu,command | tail -n+2 | sed 's/^ *//')
echo "$current" > $prefix$(date +%s)
a=($prefix*); for ((i=0;i<=${#a[@]}-3;i++)); do rm "${a[i]}"; done
[[ $(awk '{s+=$1}END{printf "%i",s}' <<< "$current") -lt $cpulimit ]] && exit
averages=$(awk '{cpu=$1;sub(/[^ ]+ /,"");a[$0]+=cpu;c[$0]++}END{for(i in a){printf "%.1f %s\n",a[i]/c[$0],i}}' $prefix* | sort -rn)
if [[ $(awk '{s+=$1}END{printf "%i",s}' <<< "$averages") -ge $cpulimit ]]; then
    terminal-notifier -title "CPU use" -message "$(head -n5 <<< "$averages" | paste -sd / -)"
fi

Se la CPU media utilizzata negli ultimi tre campioni supera il 50%, utilizza terminale-notificatore per visualizzare processi che utilizzavano la maggior parte della CPU.

Potresti anche utilizzare MenuMeters per visualizzare l'utilizzo totale della CPU nella barra dei menu:

Oeseguiunoscriptcomequestocon GeekTool :

for i in {1..4}; do ps -erco %cpu,command | tail -n+2; sleep 1; done | sed 's/^ *//' | grep -v GeekTool | awk '{cpu=$1;sub(/[^ ]+ /,"");a[$0]+=cpu;c[$0]++}END{for(i in a){printf "%.1f %s\n",a[i]/c[$0],i}}' | sort -rn

    
risposta data 02.05.2013 - 15:09
fonte

Leggi altre domande sui tag