Verwenden Sie Koffeinat, um das Einschlafen bei geschlossenem Deckel bei Batteriebetrieb zu verhindern

Das native caffeinateDienstprogramm funktioniert nicht, um zu verhindern, dass mein MacBook schläft, wenn ich das Display schließe. Stattdessen geht das System in den Ruhezustand und verschiedene Netzwerkdienste ( VPN, Bildschirmfreigaben, VoIP-Anrufe, Messaging-Clients, Dateiübertragungen ) schlagen fehl, während ich in < 5 Minuten von meinem Schreibtisch zu meinem Meeting gehe .

Wenn ich mit halb geöffnetem Laptopdeckel herumlaufe, ist es schwierig, meinen Kaffee sicher zu tragen, und es ist ausgesprochen uncool.

Das native caffeinateDienstprogramm wurde entwickelt, um dies als benutzerfreundlichen Ersatz für zu handhaben pmset, scheint jedoch so konzipiert zu sein, dass es nicht funktioniert, wenn es vom Stromnetz getrennt wird.

Dokumente überman caffeinate

-s Erstellt eine Behauptung, um zu verhindern, dass das System schläft. Diese Behauptung ist nur gültig, wenn das System mit Wechselstrom betrieben wird .

Auf der Suche nach einer nativen Alternative zu InsomniaX oder Nosleep .

Eine Timeout-Funktion ist unerlässlich, damit ich mein untotes Macbook nicht versehentlich in eine Tasche stopfe, was zu einem heißen Durcheinander führt. ( caffeinate -t, gibt den Timeout-Wert in Sekunden an )

Ich fürchte, es gibt keine native Alternative, da ein MacBook beim Schließen in den Ruhezustand wechseln soll. :-/
Das Herumlaufen mit dem MacBook ist genau der Grund, warum ich auch eine Lösung zum Verhindern des Einschlafens bei geschlossenem Deckel haben möchte.
Hast du die Option ausprobiert -t, wie caffeinate -t 3600? Meiner Erfahrung nach funktioniert es auch, wenn das Macbook im Akkubetrieb läuft.
Danke für den Vorschlag, hat bei den ersten Versuchen nicht funktioniert. Übersehe ich etwas? Getestet 1) caffeinate -t 36002) Schließen Sie den Laptop 3) Warten Sie 5 Sekunden 4) Öffnen Sie den Laptop, um den Anmeldebildschirm und getrennte Netzwerkdienste zu finden.
@hier Ich habe jedoch nicht versucht, den Deckel zu schließen. Ich habe gerade den Befehl mit -tOption ausgeführt, als mein MacBook im Akkubetrieb war, und es ging nicht in den Ruhezustand. Ich habe es nicht mit geschlossenem Deckel versucht, aber es sieht so aus, als ob das Macbook in den Ruhezustand gezwungen wird, sobald Sie den Deckel schließen. Entschuldigung für mein Missverständnis. Ich dachte, Sie suchen nach einer Möglichkeit, es nur im Akkubetrieb ohne geschlossenen Deckel zum Laufen zu bringen.

Antworten (5)

Es ist nicht ideal, aber hier ist eine Lösung. Führen Sie die folgenden Befehle aus, um zu verhindern, dass der Laptop in den Ruhezustand wechselt, wenn der Deckel geschlossen ist und Sie mit Akku betrieben werden:

sudo pmset -b sleep 0; sudo pmset -b disablesleep 1

Führen Sie die folgenden Befehle aus, um den Ruhezustand des Laptops bei geschlossenem Deckel und Batteriebetrieb wieder zu aktivieren:

sudo pmset -b sleep 5; sudo pmset -b disablesleep 0

Die "5" im zweiten Befehlssatz repräsentiert die Anzahl der Minuten vor dem Schlafengehen im Akkubetrieb; wie gewünscht für Ihren Laptop einstellen.

Dies ist ein bisschen gefährlich, denn wenn Sie vergessen, Ihre Einstellungen wieder zu aktivieren, wird der Laptop im Akkubetrieb nie schlafen. Aus diesem Grund habe ich ein Shell-Skript geschrieben, um die Einstellungen automatisch wieder zu aktivieren:

#!/bin/bash
#***************************************************************************
#*** noz - prevent laptop from sleeping when lid is closed
#***************************************************************************

#***** set some defaults *****
BATTERY_SLEEP=5 # in minutes
DEF_WAKE_LEN=300 # in seconds

#***** determine timeout value *****
timeout_len=${1:-$DEF_WAKE_LEN}

function prevent_sleep() {
    echo
    echo -n "Preventing sleep for $timeout_len seconds; press <enter> to continue..."

    sudo pmset -b disablesleep 1
    sudo pmset -b sleep 0
}

function enable_sleep() {
    # $1: <enter> = 0, timeout = 1, Ctrl-C = undef

    #----- insert a newline for timeout or Ctrl-C -----
    if [[ ${1:-1} -eq 1 ]]; then    echo; fi
    echo "Restoring previous battery sleep setting: $BATTERY_SLEEP"

    sudo pmset -b disablesleep 0
    sudo pmset -b sleep $BATTERY_SLEEP

    #----- sleep on timeout only -----
    if [[ ${1:--1} -eq 1 ]]; then   sudo pmset sleepnow; fi
    exit
}

#***** prevent it from sleeping *****
prevent_sleep

#***** trap Ctrl-C *****
trap enable_sleep INT

#***** wait for an enter *****
read -t $timeout_len
rc=$?

#***** re-enable normal sleep *****
enable_sleep $rc

Das Shell-Skript deaktiviert den Schlafmodus, bis Sie die EnterTaste drücken, und aktiviert dann die Schlafeinstellungen wieder (alternativ können Sie drücken Ctrl- Cund dasselbe erreichen). Es wird auch ein Timeout (standardmäßig 300 Sekunden/5 Minuten) festgelegt, nach dem die Schlafeinstellungen automatisch wieder aktiviert werden und der Laptop gezwungen wird, in den Ruhezustand zu wechseln. Während dies ein Schmerz wäre, wenn Sie Ihren Laptop in einer Besprechung verwenden, wird es ein Lebensretter sein, wenn Sie vergessen und Ihren Laptop in Ihre Tasche stecken, um nach Hause zu gehen.

Aufmerksame Leser werden feststellen, dass diese Befehle sudo; leider ist das unvermeidlich AFAIK. Was ich auf meinem System getan habe, ist es so zu machen, dass ich mein Passwort nicht eingeben muss, um pmsetals root zu laufen. Bearbeiten Sie dazu die sudoersDatei ( sudo visudo) und fügen Sie diese Zeile hinzu:

joe ALL=(ALL) NOPASSWD: /usr/bin/pmset

Ersetzen Sie "joe" durch Ihren Benutzernamen. Sie könnten wahrscheinlich das gleiche Ergebnis erzielen (dh das Skript ausführen, ohne Ihr Passwort eingeben zu müssen), indem Sie das Shell-Skript SETUID ausführen, aber ich mache das nicht gerne; Das Öffnen dieses einen Befehls über Sudoers erscheint mir weniger riskant.

Um das Skript auszuführen, stecken Sie es in ein Verzeichnis auf Ihrem PATHund rufen Sie es als solches auf:

noz [<timeout in seconds>]

Wenn Sie Ihr Ziel erreicht haben, drücken Sie einfach Enteroder CtrlCund Sie können loslegen. Und wenn Sie es vergessen, wird es automatisch zurückgesetzt und schläft.

Es gibt wahrscheinlich eine Möglichkeit, all dies über AppleScript zu erreichen, sodass Sie ihm dann einen Hotkey zuweisen können und was nicht; Ich werde das versuchen, wenn ich jemals müde werde, dies von der Befehlszeile aus auszuführen.

Cool! Vielen Dank! Ein Vorschlag / Vereinfachung: Ich denke nicht, dass Sie die sleepEinstellung ändern müssen. Einfach ein- disablesleepund ausschalten. pmset -a disablesleep 1und pmset -a disablesleep 0funktionieren gut für mich. Mein MacBook geht nicht in den Ruhezustand, wenn ich den Deckel schließe. Alle anderen Einstellungen bleiben gleich.
Der Github-Benutzer iccir hat eine kostenlose App namens Fermata erstellt, die diesen Trick unter der Haube verwendet und ihn hübsch mit einem Menüleistensymbol und einem Timer usw. verpackt. Ich habe es gerade auf Mojave (10.14.2) ausprobiert und es hat für mich großartig funktioniert. github.com/iccir/Fermata
Erwähnenswert ist vielleicht, dass sudo pmset -b disablesleep 1der Status über Neustarts hinweg beibehalten wird und dass die Option „ Sleep “ im Apple-Logo-Menü () deaktiviert bleibt, bis Sie den Ruhezustand wieder aktivieren. Sie müssen ausführen sudo pmset -a disablesleep 0, um den Ruhezustand wieder zu aktivieren.

Es gibt keinen nativen Weg, dies zu tun. Folgendes habe ich nach einigem Suchen und Probieren herausgefunden:

Geben Sie hier die Bildbeschreibung ein

Notiz:

  • Die Kernel-Erweiterung von Nosleep konnte auf High Sierra nicht geladen werden
  • Das private SPI wird von Apple nach High Sierra NICHT unterstützt. Fermata hatpmset nach Version 1.1 auf die Methode umgestellt
  • Möglicherweise müssen Sie Gatekeeper deaktivieren, damit Insomnia wie erwartet funktioniert.
  • Die anderen Apps, die ich ausprobiert habe, funktionieren nicht mit geschlossenem Deckel
Es gibt einen hackigen nativen Weg, den ich kenne, wie man das macht: Starten Sie eine Bildschirmfreigabesitzung mit dem Ziel-Mac und er wird nicht schlafen, selbst wenn der Deckel geschlossen und die Batterieleistung entfernt wird. Ich beziehe mich auf die integrierte macOS-Bildschirmfreigabefunktion und nicht auf die eines Drittanbieters. Wenn eine Sitzung aktiv ist, führt der screensharingdProzess auf dem Ziel-Mac eine Power-Assertion aus, PreventSystemSleepund dies wird tatsächlich respektiert, wodurch der Systemschlaf verhindert wird.

Der Github-Benutzer iccir hat eine sehr praktische kleine kostenlose Menüleisten-App namens Fermata entwickelt, die genau das tut, was Sie wollen: ein MacBook bei geschlossenem Deckel wach hält und es Ihnen ermöglicht, eine Zeitüberschreitungsdauer festzulegen.

Ich habe es gerade auf Mojave (10.14.2) ausprobiert und es hat bei mir hervorragend funktioniert. https://github.com/iccir/Fermata

getestet auf macOS Catalina Version 10.15.6

funktioniert sowohl im Batteriemodus als auch im Lademodus.

sudo pmset disablesleep 1

Vergessen Sie nicht, die Einstellungen wiederherzustellen

sudo pmset disablesleep 0

Meine Tochter schließt oft den Deckel, wenn sie feststellt, dass ich meinen Platz verlassen habe, während ich noch YouTube höre, dieser pmset-Befehl hilft mir, weiter YouTube zu hören.

Hast du diese App ausprobiert ? Ich finde es sehr nützlich für genau das, wonach Sie suchen.

Ich bin mir ziemlich sicher, dass es eine Timeout-Funktion gibt, die Sie in den Einstellungen der App festlegen.

Danke @mitchell-d. Die Frage fragt speziell nach einer nativen Lösung wie Koffeinat. Es gibt andere Apps, die in Gibt es eine Möglichkeit, ein Macbook Pro so einzustellen, dass es nicht schläft, wenn Sie den Deckel schließen . Trotzdem habe ich die von Ihnen empfohlene Koffein - App ausprobiert verhindert nicht , dass mein MacBook schläft, wenn ich den Deckel schließe.