Dies ist eine Variante, die aus der Antwort von @Lri aufgebaut ist. Es bleibt stumm, wenn keine Prozesse über einem Schwellenwert liegen (hier auf 60 eingestellt), führt jedoch keine Mittelwertbildung über die Abtastwerte durch und kann daher zu mehr einmaligem Rauschen führen. Wie bei der anderen Antwort müssen Sie Terminal-Notifier installieren .
Speichern Sie das folgende Skript in einer Datei (z. B. aufgerufen /Users/goldberg/cpu_notify
und ausführbar gemacht):
#!/bin/bash
# Post a notification if a process is over a CPU limit
# see ~/Library/LaunchAgents/goldberg.cpu_notify.plist
notify=/usr/local/bin/terminal-notifier
cpulimit=60
active=$(ps -erco %cpu,command \
| head -3 \
| grep -vE -e '\b(CPU COMMAND|bash|sed|awk|ps|grep|head)\b' \
| awk "\$1 > $cpulimit")
# Skip if empty.
[ -z "${active}" ] || $notify -title "CPU use" -message "$active"
Wenn Sie ein Protokoll darüber wünschen, wann bestimmte Prozesse überaktiv sind (ich muss zum Beispiel darauf ntpd
achten), fügen Sie dem Skript eine Zeile wie die folgende hinzu:
echo "${active}" | grep -e SymDaemon -e ntpd | sed 's/^/'"$(date) "'/' >> ~/tmp/symd-notes
... und launchd
speichern Sie die folgende Datei unter einem Namen wie ~/Library/LaunchAgents/goldberg.cpu_notify.plist
. Verwenden Sie launchctl -w
diese Option, um die Liste zu identifizieren launchd
(und um launchctl list
zu überprüfen, ob sie vorhanden ist).
Dies ist auf ein Intervall von 300 Sekunden (5 Minuten) eingestellt, und Sie müssen die Zeile bearbeiten, die auf das Skript verweist.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>goldberg.cpu_notify</string>
<key>Program</key>
<string>/Users/goldberg/bin/cpu_notify</string>
<key>ServiceDescription</key>
<string>High CPU process notification</string>
<key>StartInterval</key>
<integer>300</integer>
<key>ThrottleInterval</key>
<integer>0</integer>
</dict>
</plist>
Hier erfahren Sie mehr über launchd und launchctl .