Ratgeber
Was hält deinen Mac wach?
Dein Mac schläft nicht ein, die Lüfter drehen, und nichts Offensichtliches läuft. macOS tut hier nicht geheimnisvoll: Irgendetwas hat ihm gesagt, wach zu bleiben, dieses Etwas hat einen Namen und eine Prozess-ID — und du kannst danach fragen. Dieser Ratgeber zeigt, wie du es findest, wie du die Antwort liest und wie du nachvollziehst, was passiert ist, während du nicht hingeschaut hast. Am Ende steht das umgekehrte Problem — ein Mac, der mitten in der Arbeit einschläft — und genau dafür gibt es Perked.
Nichts hält einen Mac anonym wach
macOS entscheidet anhand einer Liste von Power Assertions, ob es schlafen darf. Eine Assertion ist die Bitte eines laufenden Prozesses, die „noch nicht“ sagt — und jede einzelne nennt den Prozess, der sie gestellt hat, die Art von Schlaf, die sie blockiert, und meist einen lesbaren Grund.
Das ist der entscheidende Punkt: Eine anonyme Schlafsperre gibt es nicht. Wenn dein Mac wach ist, obwohl er es nicht sein sollte, steht irgendein Prozess mit seiner Bitte im Protokoll — und zwei Befehle zeigen dir, welcher.
PreventUserIdleSystemSleep— der Mac schläft nicht von selbst ein. Das hält ein langer Job oder ein Download.PreventUserIdleDisplaySleep— auch der Bildschirm bleibt an. Videoplayer und Präsentations-Apps nehmen diese.PreventSystemSleep— blockiert den Schlaf noch härter, teils auch bei geschlossenem Deckel.UserIsActive— du hast gerade Trackpad oder Tastatur berührt. Läuft von selbst ab; kein hängender Prozess.
Frag das System: pmset -g assertions
Öffne das Terminal und führe pmset -g assertions aus. Der obere Block ist eine systemweite Zählung — eine 1 neben PreventUserIdleSystemSleep heißt, dass gerade etwas den Schlaf verhindert. Der Block darunter ist der interessante, denn er listet die Assertions nach dem besitzenden Prozess:
- pid 23164(Perked) Prozess-ID und Name — dein Übeltäter oder dein unschuldiger Zaungast.
- 01:45:21 wie lange diese Assertion schon gehalten wird. Ein Wert, der immer weiter steigt, gehört zu einem Prozess, der nie losgelassen hat.
- named: "…" der Grund, den der Prozess angegeben hat. Gut erzogene Apps schreiben hier etwas Lesbares hin, etwa „Powerd - Prevent sleep while display is on“.
- Timeout will fire in 285 secs diese läuft von selbst ab. Assertions ohne Timeout gelten, bis der Prozess sie freigibt — oder sich beendet.
Sagt dir ein Name nichts, führe ps -p <pid> mit der Nummer aus dieser Zeile aus, um den vollständigen Befehl dahinter zu sehen. Und wenn du den Prozess einfach beenden kannst: Das Beenden gibt die Assertion sofort frei, mehr ist nicht aufzuräumen.
Wenn die Liste leer bleibt
Ein häufiger Ärger: Der Mac hat sich letzte Nacht offensichtlich geweigert zu schlafen, und heute Morgen zeigt pmset -g assertions gar nichts. Das ist kein Fehler — Assertions sind ein Momentzustand. Was auch immer eine gehalten hat, ist inzwischen fertig oder beendet, und der Beweis ging mit.
Es gibt noch eine zweite Ursache, die Assertions nie erklären: Dein Mac wurde nicht wachgehalten, sondern geweckt. Netzwerkverkehr, ein Bluetooth-Gerät, eine geplante Aufgabe, ein USB-Gerät oder das Einstecken des Netzteils können ihn aus dem Schlaf holen. Für beides brauchst du die Historie statt des Momentzustands.
Der Befehl, der beantwortet, „was hat ihn um 3 Uhr geweckt?“
pmset -g log lassen die meisten Anleitungen aus, und es ist das Einzige, was im Nachhinein noch funktioniert. Es führt eine laufende Historie über jeden Schlaf, jedes Aufwachen und jede Änderung an Assertions — jeweils mit Grund. Frag es, was die Maschine geweckt hat:
pmset -g log | grep -i "Wake from"— jedes Aufwachen mit dem Hardware- oder Software-Grund. „due to UserActivity Assertion“ bist du; „due to en0“ ist das Netzwerk; ein USB-Gerät nennt sich selbst.pmset -g log | grep -i assertion— die Assertion-Historie: Du siehst, welcher Prozess um 02:58 eine genommen und nie zurückgegeben hat.pmset -g log | grep -i "Entering Sleep"— wann er tatsächlich geschlafen hat und was er als Grund verbucht hat.
Lies ab dem Zeitstempel, der dich interessiert, nicht von oben. Das Log umfasst Tage, und die Antwort auf „warum war der Akku heute Morgen bei 4 %“ ist meist eine einzige Zeile rund um deine Schlafenszeit.
Die grafische Variante: Aktivitätsanzeige
Wenn du das Terminal meiden willst: Die Aktivitätsanzeige hat einen Tab „Energie“ mit der Spalte „Verhindert Ruhezustand“ — danach sortieren, und die schuldige App steht oben. Das ist schneller erreicht und reicht für den häufigen Fall einer offensichtlichen App.
Sie zeigt allerdings nur Programme, und nur den Jetzt-Zustand. Hintergrunddienste, Kommandozeilen-Werkzeuge und alles, was sich schon beendet hat, tauchen dort nicht auf — deshalb bleiben die pmset-Befehle die gründliche Antwort.
Die üblichen Verdächtigen
- caffeinate der eingebaute Befehl, dessen Zweck genau darin besteht, eine Assertion zu halten. Völlig normal — außer du hast ihn in einem längst vergessenen Terminal-Fenster gestartet.
- Ein vergessenes pmset disablesleep führe pmset -g | grep SleepDisabled aus. Steht dort 1, ist der Schlaf systemweit abgeschaltet und übersteht Neustarts. Rückgängig mit sudo pmset -a disablesleep 0.
- Backups und Indizierung Time Machine und Spotlight (mds, mds_stores) nehmen während der Arbeit Assertions. Das erledigt sich von selbst; lass sie durchlaufen.
- Docker, VMs und Container eine laufende VM oder Container-Laufzeit hält die Maschine meist so lange wach, wie sie läuft — ob beschäftigt oder nicht.
- Downloads, Uploads und Freigaben Browser, Cloud-Sync-Clients und Bildschirmfreigabe halten Assertions, solange eine Übertragung oder Sitzung läuft.
- Ein externer Monitor oder ein Dock Anstecken kann das Energieprofil komplett ändern, und manche Docks halten eine eigene USB-Kernel-Assertion.
Das umgekehrte Problem: Er schläft, wenn er wach sein soll
Die meisten, die das hier nachschlagen, landen irgendwann beim Gegenteil: Der Mac ist eingeschlafen und hat einen langen Job mitgenommen. Ein KI-Coding-Agent, ein Build, ein Render, ein Skript über Nacht — sie alle sterben still, wenn die Maschine in den Leerlauf geht, und keiner von ihnen hält eine eigene Assertion.
Die groben Lösungen haben echte Kosten. caffeinate hält alles wach, bis du daran denkst, es zu beenden. sudo pmset -a disablesleep 1 schaltet den Schlaf systemweit ab, verlangt ein Admin-Passwort und bleibt über Neustarts hinweg aus, bis du es zurücknimmst — genau deshalb landen Leute überhaupt auf dieser Seite.
Perked ist die eingegrenzte Variante derselben Idee: Es achtet auf Coding-Agents und jeden Prozess, den du benennst, hält die Assertion nur, solange sie wirklich laufen, und gibt sie frei, sobald sie fertig sind. Dabei bleibt es energiebewusst — nur im Netzbetrieb oder ab einer Akkuschwelle, die du festlegst — und pausiert, wenn der Mac zu heiß wird. Alles, was es tut, erscheint unter seinem eigenen Namen in pmset -g assertions, genau wie die Einträge oben, sodass du seine Arbeit jederzeit überprüfen kannst.
Häufige Fragen
Was ist eine Power Assertion unter macOS?
Die Bitte eines laufenden Prozesses an macOS, nicht zu schlafen. Jede hält fest, welcher Prozess sie gestellt hat, welche Art von Schlaf sie blockiert und meist einen lesbaren Grund. Nichts kann deinen Mac wach halten, ohne in dieser Liste aufzutauchen.
Wie sehe ich, was meinen Mac gerade wach hält?
Führe pmset -g assertions im Terminal aus und lies den Block „Listed by owning process“ — er nennt Prozess-ID, Assertion-Typ, Haltedauer und den angegebenen Grund. Die Aktivitätsanzeige zeigt dasselbe für Programme im Tab „Energie“ unter „Verhindert Ruhezustand“.
pmset -g assertions ist leer, trotzdem wollte mein Mac nicht schlafen. Warum?
Weil Assertions ein Momentzustand sind: Was eine gehalten hat, hat sich inzwischen beendet. Nimm stattdessen pmset -g log — es führt die Historie, sodass du genau den Zeitpunkt nachsehen und erkennen kannst, welcher Prozess eine Assertion genommen hat oder was die Maschine geweckt hat.
Wie finde ich heraus, was meinen Mac geweckt hat?
Führe pmset -g log | grep -i "Wake from" aus. Jede Zeile nennt Zeitstempel und Grund: Benutzeraktivität, ein Netzwerkpaket auf en0, ein USB-Gerät oder ein geplantes Wartungs-Aufwachen. Das sind Wakes, keine Assertions — deshalb tauchen sie in pmset -g assertions nie auf.
Ich habe pmset disablesleep 1 ausgeführt und mein Mac schläft nicht mehr. Wie mache ich das rückgängig?
Führe sudo pmset -a disablesleep 0 aus und prüfe mit pmset -g | grep SleepDisabled — dort sollte 0 stehen. Diese Einstellung gilt systemweit und übersteht Neustarts, sie verschwindet also nicht von selbst.
Kann ich den Mac nur während eines bestimmten Jobs wach halten?
Ja. caffeinate -w <pid> hält eine Assertion, bis dieser Prozess endet, und caffeinate -i <Befehl> hält eine für die Dauer eines Befehls, den du damit startest. Perked macht dasselbe automatisch für KI-Coding-Agents und jeden Prozess, den du ergänzt — mit Akku- und Temperaturgrenzen obendrauf.
Schluss mit dem Raten, welcher Prozess schuld ist
Perked hält deinen Mac nur wach, solange deine Agents wirklich laufen — und schreibt jede Entscheidung mit. Einmalig 1 €.
Passende Ratgeber
Der Befehl hinter dem meisten davon: der macOS-Befehl caffeinate, Flag für Flag →
Lange Jobs unbeaufsichtigt? KI-Coding-Agents über Nacht auf dem Mac laufen lassen →