Jak spać wyświetlacz z terminalu?

Odpowiedzi:

71

W OS X 10.9 możesz to zrobić po prostu pmset displaysleepnow. Spowoduje to natychmiastowe wyłączenie wyświetlacza bez zmiany jakichkolwiek ustawień lub uśpienia całego hosta.

Wydaje się, że eskalowane uprawnienia nie są wymagane (przynajmniej w przypadku najnowszych wersji OS X), ale jeśli pojawi się komunikat o nieodpowiednich uprawnieniach, możesz to zrobić sudo pmset displaysleepnow.

Na podstawie opinii komentujących nie jest to dostępne w systemie OS X 10.8 lub wcześniejszym.

Sarah G.
źródło
22

Chociaż nie udało mi się znaleźć polecenia, które uśpiłoby wyświetlacz natywnie, istnieje aplikacja , która to zrobi. Istnieją dwie opcje stąd.

  1. Zainstaluj aplikację w folderze Aplikacje i z poziomu terminalu lub SSH open /Applications/Sleep\ Display.app

  2. Kliknij prawym przyciskiem myszy aplikację z folderu Pobrane i kliknij „Pokaż zawartość opakowania”. Przejdź do Contents/MacOSi skopiuj plik trybu uśpienia.

    Przejdź do /usr/bin(możesz użyć skrótu + + Gi wpisz katalog) i wklej plik binarny. Teraz będziesz mógł wpisać polecenie sleepdisplayw Terminalu lub przez SSH, a wyświetlacz natychmiast przejdzie w tryb uśpienia.

Mam nadzieję że to pomoże!

Matt Love
źródło
7

Oto prosty skrypt powłoki, który to zrobi.

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

Spowoduje to uruchomienie / uruchomienie wszelkich ustawień włączonych wygaszacza ekranu na tym komputerze.

afragen
źródło
Ten mi się podoba. Skopiowałem / wkleiłem ten kod do pliku / usr / local / bin / ss, chmod + x, i mogę teraz wpisać „ss” w wierszu poleceń, aby aktywować wygaszacz ekranu. Z kolei wygaszacz ekranu jest skonfigurowany w taki sposób, aby pytał o hasło w minutę po aktywacji wygaszacza ekranu (który, jak sądzę, można go jeszcze obniżyć)
fwielstra
7

Poniższy skrypt wykona zadanie (w systemie Leopard i nowszych), ale należy go uruchomić z sudo:

Założeniem jest to, że pmsetmożna ustawić czas do uśpienia wyświetlacza, ale problem polega na tym, że wartość 0 wyłącza tę funkcję, zamiast ustawiać opóźnienie na zero, a wartość 1 oznacza pełne jednominutowe opóźnienie. Magia polega na tym, że wartość 2 ^ 31 wydaje się być przechowywana jako zero ujemne, które magicznie działa jako „natychmiast wyłącz wyświetlacz”.

W Tygrysie i wcześniejszych potrzebna była inna liczba magiczna, ponieważ do przechowywania opóźnień w minutach użyto wewnętrznej zmiennej o różnych bitach, aż do wyłączenia wyświetlacza.

To naśladuje zachowanie control- shift- ejecti może być używane na MacBooku Airs bez ejectklucza.

#!/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
źródło
5

w systemie macOS Sierra

  • wyświetlacz snu: pmset displaysleepnow
  • wyświetlacz budzenia: caffeinate -u -t 1
  • stan testowy: pmset -g powerstate IODisplayWrangler | tail -1 | cut -c29wyniki <4 to uśpiony wyświetlacz

mały serwer HTTP z węzłem do zdalnego ustawiania stanu ekranu komputera Mac: https://github.com/ycardon/switch-api

Yann Cardon
źródło
Możesz uzyskać 0 lub niezerowy kod wyjścia dla logiki warunkowej, wykonując to "echo $[$(pmset -g powerstate IODisplayWrangler | tail -1 | cut -c29) - 4]"(używając tego do wartości prawda / fałsz „czy ekran jest włączony?”).
atwixtor
4

Uruchom następujące polecenie, aby wykonać krótki AppleScript, który uśpi ekran:

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

Nazwa polecenia sugeruje, że może umieścić cały system do snu w pewnych okolicznościach, ale nie mogłem się stało w ograniczonym testów: Testowałem go na skrypcie zacząłem krótko przed wykonaniem tego polecenia, i który został uruchomiony na kilka minut, aż „obudzę” system. Nadal drukował przez cały czas.

Daniel Beck
źródło
2

Naprawdę mam nadzieję, że ta odpowiedź nie jest na uboczu. Mój ulubiony sposób na spanie, ponowne uruchomienie, wyłączenie - a co najważniejsze zablokowanie - komputer Mac używa Alfred (program uruchamiający aplikacje).

Nie wymaga żadnych skryptów, znajomości skryptów ani użycia terminala, co jest genialne.

Jeśli jednak CHCESZ specjalnie użyć terminala, prawdopodobnie nie jest to rozwiązanie dla Ciebie.

Mitch Rosen
źródło
2

Budzić: caffeinate -u -t 2

Spać: pmset displaysleepnow

Dermot
źródło
1

Możesz użyć pmsetpolecenia, aby zmienić wartość parametru displayleep, coś w rodzaju

pmset -a displaysleep 1

(wymaga rootowania)

da4
źródło
1

Spójrz na maclock projektu github typu open source

Domyślnie po prostu uruchamia wygaszacz ekranu, ale możesz uśpić wyświetlacz za pomocą:

maclock --display

Pod przykryciem jest to skrypt bash, który w zasadzie tylko wywołuje:

pmset displaysleepnow
rubel
źródło
1

Cóż, to jest stare, ale wydaje się, że nigdzie nie ma naprawdę dobrych odpowiedzi na to pytanie.

Mam skrypt AppleScript do działania, chociaż wymaga on aplikacji innej firmy, nieobsługiwanej i niezarejestrowalnej - Extra Suites. Można go pobrać na starej stronie dewelopera .

# 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

Włączyłem go również do przepływu pracy Alfreda .

Bruce
źródło
1

Zrobiłem to z sudo shutdown -s now.

Pamiętaj jednak, że będziesz potrzebować do tego uprawnień administratora.

Tom Shen
źródło
0

Proszę bardzo -

sudo su
pmset displaysleepnow
Manas Sharma
źródło
-1

Korzystanie z Alfreda (bezpłatny w AppStore) to świetny sposób na uśpienie wyświetlacza po prostu przez napisanie: „sleep”. Nie ma nic prostszego.

Oczywiście Alfred robi znacznie więcej, możesz także ponownie uruchomić komputer, wylogować się, opróżnić kosz, zablokować, wyłączyć i wiele innych rzeczy.

Alejandro Escobell
źródło
1
Nie rozwiązuje to jego potrzeby zrobienia tego zdalnie lub przez ssh.
TJ Luoma,
-2

Nie potrzebujesz dodatkowej aplikacji, po prostu użyj tell application "Finder" to sleep

użytkownik81191
źródło
1
Czy to nie śpi cały komputer?
nohillside
-2

Aplikacja Launchbar działa równie dobrze jak Alfred. W moim przypadku spacja CMD, a następnie S [Sleep] - prosta i szybka

Norm Beazer
źródło
To nie odpowiada na pytanie. gregseth nie szuka sposobu na uśpienie komputera za pomocą narzędzia innej firmy, ale sposób na uśpienie wyświetlacza z wiersza poleceń .
Timothy Mueller-Harder