¿Hay alguna aplicación que me notifique (en el centro de notificaciones) si un proceso está agotando un alto porcentaje de CPU durante un período de tiempo específico?

7

El otro día, estaba sentado en una cafetería trabajando, cuando miré hacia abajo para encontrar que quedaba el 25% de mi batería.

Miré mi Monitor de actividad y vi que el proceso de la máquina del tiempo iba al 90% por un tiempo (mientras lo estaba viendo).

¿Hay alguna aplicación que pueda notificarme si un proceso se encuentra en un cierto nivel durante un período de tiempo determinado?

    
pregunta Taylor Smith 02.05.2013 - 06:23

1 respuesta

5

Puede ejecutar un script como este a cada 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

Si el uso promedio de la CPU en las últimas tres muestras es superior al 50%, utiliza notificador de terminal para mostrar el Procesos que utilizan la mayoría de la CPU.

También puede usar MenuMeters para mostrar el uso total de la CPU en la barra de menús:

Oejecuteunscriptcomoestecon 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

    
respondido por el user495470 02.05.2013 - 15:09

Lea otras preguntas en las etiquetas