Wie kann ich das Display vom Terminal aus in den Ruhezustand versetzen?

Antworten:

71

In OS X 10.9 können Sie dies einfach tun pmset displaysleepnow. Dadurch wird Ihr Bildschirm sofort ausgeschaltet, ohne dass Änderungen an Ihren Einstellungen vorgenommen oder der gesamte Host in den Energiesparmodus versetzt werden muss.

Eskalierte Berechtigungen sind anscheinend nicht erforderlich (zumindest in neueren Versionen von OS X). Wenn Sie jedoch eine Meldung über unzureichende Berechtigungen erhalten, können Sie dies tun sudo pmset displaysleepnow.

Aufgrund des Feedbacks von Kommentatoren ist dies in OS X 10.8 oder früher nicht verfügbar.

Sarah G
quelle
22

Obwohl ich keinen Befehl gefunden habe, der das Display nativ ausschaltet, gibt es eine App, die Sie herunterladen können. Hier gibt es zwei Möglichkeiten.

  1. Installieren Sie die App im Ordner Applications und starten Sie sie über Terminal oder SSH open /Applications/Sleep\ Display.app

  2. Klicken Sie mit der rechten Maustaste auf die App im Ordner "Downloads" und klicken Sie auf "Paketinhalt anzeigen". Navigieren Sie zur Contents/MacOSSleepdisplay-Datei und kopieren Sie sie.

    Navigieren Sie zu /usr/bin(Sie können die Tastenkombination + + verwenden Gund das Verzeichnis eingeben) und fügen Sie die Binärdatei ein. Sie können den Befehl jetzt sleepdisplayin Terminal oder über SSH eingeben und das Display wird sofort in den Ruhezustand versetzt.

Hoffe das hilft!

Matt Love
quelle
7

Hier ist ein einfaches Shell-Skript, das dies erledigt.

#!/usr/bin/env bash
open /System/Library/Frameworks/ScreenSaver.framework/Versions/A/Resources/ScreenSaverEngine.app

Dadurch werden alle Einstellungen ausgeführt / gestartet, die Sie für den Bildschirmschoner auf diesem Computer aktiviert haben.

afragen
quelle
Ich mag dieses. Ich habe diesen Code in eine Datei / usr / local / bin / ss kopiert / eingefügt, chmod + x darauf und kann jetzt 'ss' in eine Befehlszeile eingeben, um den Bildschirmschoner zu aktivieren. Der Bildschirmschoner ist so konfiguriert, dass er eine Minute nach dem Aktivieren des Bildschirmschoners nach einem Passwort fragt (was, glaube ich, bei Bedarf weiter gesenkt werden kann)
fwielstra
7

Das folgende Skript erledigt die Aufgabe (in Leopard und höher), muss jedoch ausgeführt werden mit sudo:

Die Voraussetzung ist, dass pmseteine Zeit bis zum Ruhezustand der Anzeige eingestellt werden kann. Das Problem ist jedoch, dass der Wert 0 die Funktion deaktiviert, anstatt die Verzögerung auf Null zu setzen, und der Wert 1 eine volle Verzögerung von einer Minute ist. Die Magie dabei ist, dass ein Wert von 2 ^ 31 als negative Null gespeichert zu sein scheint, was magisch funktioniert als "Display sofort ausschalten".

In Tiger und früheren Versionen war eine andere magische Zahl erforderlich, da intern eine andere Variable mit Bitgröße verwendet wurde, um die Verzögerung in Minuten zu speichern, bis sich das Display ausschaltet.

Dies imitiert das Verhalten von control- shift- ejectund kann auf MacBook Airs ohne ejectSchlüssel verwendet werden.

#!/bin/bash
original_setting=`/usr/bin/pmset -g | /usr/bin/awk '/displaysleep/ {print $2}'`
magic_number=2147483648
/usr/bin/pmset -a displaysleep $magic_number; sleep 1; /usr/bin/pmset -a displaysleep $original_setting
Daniel
quelle
5

auf macOS Sierra

  • Schlafanzeige: pmset displaysleepnow
  • Weckanzeige: caffeinate -u -t 1
  • Teststatus: pmset -g powerstate IODisplayWrangler | tail -1 | cut -c29Ergebnisse <4 sind eine Schlafanzeige

Ein kleiner Knoten-HTTP-Server zum Festlegen des Bildschirmstatus Ihres Mac per Fernzugriff: https://github.com/ycardon/switch-api

Yann Cardon
quelle
Sie können einen Exit-Code von 0 oder ungleich Null für die bedingte Logik abrufen, "echo $[$(pmset -g powerstate IODisplayWrangler | tail -1 | cut -c29) - 4]"indem Sie dies tun (mit true / false "ist der Bildschirm eingeschaltet?").
Am
4

Führen Sie den folgenden Befehl aus, um ein kurzes AppleScript auszuführen, mit dem die Anzeige in den Energiesparmodus versetzt wird:

osascript -e 'tell application "System Events" to sleep'

Der Befehl Name schon vermuten lässt , dass es könnte das gesamte System in den Schlaf unter Umständen setzen, aber ich konnte nicht erkennen , dass in begrenzten Tests geschehen: Ich habe es mit einem Shell - Skript getestet Ich begann kurz vor der Ausführung dieses Befehls, und die für ein paar lief Minuten, bis ich das System "aufgeweckt" habe. Die Ausgabe wurde während der gesamten Zeit fortgesetzt.

Daniel Beck
quelle
2

Hoffe wirklich, dass diese Antwort nicht zu weit vom Schuss ist. Meine Lieblingsmethode zum Einschlafen, Neustarten, Herunterfahren - und vor allem zum Sperren - eines Macs ist die Verwendung von Alfred (dem App-Launcher).

Es erfordert keine Skripte, Kenntnisse der Skripte oder die Verwendung von Terminal, was brillant ist.

Wenn Sie jedoch speziell Terminal verwenden möchten, ist dies wahrscheinlich nicht die Lösung für Sie.

Mitch Rosen
quelle
2

Aufwachen: caffeinate -u -t 2

Schlafen: pmset displaysleepnow

Dermot
quelle
1

Sie können den pmsetBefehl verwenden, um den Wert für displaysleep zu ändern

pmset -a displaysleep 1

(benötigt root)

da4
quelle
1

Schauen Sie sich das Open Source Github-Projekt maclock an

Standardmäßig wird nur der Bildschirmschoner gestartet, aber Sie können das Display in den Ruhezustand versetzen mit:

maclock --display

Im Hintergrund handelt es sich um ein Bash-Skript, das im Wesentlichen nur Folgendes aufruft:

pmset displaysleepnow
Rubel
quelle
1

Nun, dies ist eine alte, aber es scheint, dass es nirgendwo wirklich gute Antworten auf diese Frage gibt.

Ich habe ein AppleScript zum Laufen gebracht, obwohl es eine nicht verwaltete und nicht registrierbare App von Drittanbietern erfordert - Extra Suites. Es kann von der alten Website des Entwicklers heruntergeladen werden .

# Gets the current state of the upper left hot corner, then sets it to sleep display.
tell application "System Events"
  tell expose preferences
    set givenActivty to get the activity of the top left screen
    set the properties of the top left screen corner to {activity:sleep display}
  end tell
end tell

# Uses Mouse to Activate upper left hot corner. [Moving directly to {0, 0} does not work
tell application "Extra Suites" 
  ES move mouse {1, 1}
  ES move mouse {0, 0}
end tell

# Restores state of upper left hot corner.
tell application "System Events"
  tell expose preferences
    delay 1
    set the activity of the top left screen corner to givenActivty
  end tell
end tell

# Gets rid of Extra Suites nag window.
tell application "Extra Suites"
  quit
end tell

Ich habe es auch in einen Alfred Workflow integriert .

Bruce
quelle
1

Ich habe es mit gemacht sudo shutdown -s now.

Beachten Sie, dass Sie hierfür Administratorrechte benötigen.

Tom Shen
quelle
0

Bitte schön -

sudo su
pmset displaysleepnow
Manas Sharma
quelle
-1

Die Verwendung von Alfred (kostenlos im AppStore) ist eine großartige Möglichkeit, das Display in den Ruhezustand zu versetzen, indem Sie einfach "sleep" schreiben. Einfacher geht es nicht.

Natürlich macht Alfred viel mehr als das. Sie können auch neu starten, sich abmelden, den Papierkorb leeren, sperren, herunterfahren und vieles mehr.

Alejandro Escobell
quelle
1
Dies spricht nicht seine Notwendigkeit an, dies aus der Ferne oder über ssh zu tun.
TJ Luoma
-2

Benötigen Sie keine zusätzliche App, verwenden Sie einfach tell application "Finder" to sleep

user81191
quelle
1
Schläft das nicht den ganzen Computer?
Nohillside
-2

Die App Launchbar funktioniert genauso gut wie Alfred. In meinem Fall CMD Leertaste dann S [Sleep] - einfach und schnell

Norm Beazer
quelle
Dies beantwortet die Frage nicht. gregseth sucht nicht nach einer Möglichkeit, den Computer mit einem Dienstprogramm eines Drittanbieters in den Ruhezustand zu versetzen, sondern nach einer Möglichkeit, die Anzeige über die Befehlszeile in den Ruhezustand zu versetzen .
Timothy Mueller-Harder