Come posso spegnere il display dal Terminale?


Risposte:


71

In OS X 10.9, puoi semplicemente farlo pmset displaysleepnow. Ciò disattiverà immediatamente il display senza modificare nessuna delle impostazioni o mettere in pausa l'intero host.

I privilegi di escalation non sembrano essere richiesti (almeno con le versioni recenti di OS X), ma se ricevi un messaggio sui privilegi inadeguati, potresti farlo sudo pmset displaysleepnow.

In base al feedback dei commentatori, questo non è disponibile in OS X 10.8 o precedenti.


22

Anche se non sono stato in grado di trovare un comando che spegnerà il display in modo nativo, c'è un'app che scarichi che lo farà. Ci sono due opzioni da qui.

  1. Installa l'app nella cartella Applicazioni e dal terminale o esegui SSH open /Applications/Sleep\ Display.app

  2. Fare clic destro sull'app dalla cartella Download e fare clic su "Mostra contenuto pacchetto". Passare a Contents/MacOSe copiare il file sleepdisplay.

    Passare a /usr/bin(è possibile utilizzare il collegamento + + Ge digitare la directory) e incollare il file binario. Ora sarai in grado di digitare il comando sleepdisplayin Terminale o tramite SSH e il display andrà immediatamente in sospensione.

Spero che sia di aiuto!


7

Ecco un semplice script di shell che lo farà.

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

Questo eseguirà / avvierà qualsiasi impostazione tu abbia abilitato per Screen Saver su quel computer.


Mi piace questo. Ho copiato / incollato questo codice in un file / usr / local / bin / ss, chmod + x su di esso e ora posso digitare "ss" in una riga di comando per attivare lo screen saver. Lo screen saver a sua volta è configurato per richiedere una password un minuto dopo aver attivato lo screen saver (che potrebbe essere ulteriormente abbassato, credo, se necessario)
fwielstra,

7

Il seguente script farà il lavoro (in Leopard e successivi), ma deve essere eseguito con sudo:

La premessa è che pmsetpuò impostare un tempo fino allo spegnimento del display, ma il problema è che un valore di 0 disattiva la funzione, anziché impostare il ritardo su zero e un valore di 1 è un ritardo di un minuto completo. La magia qui è che un valore di 2 ^ 31 sembra essere memorizzato come zero negativo, che magicamente funziona come "spegnere immediatamente il display".

In Tiger e in precedenza, era necessario un numero magico diverso, poiché una variabile di dimensioni bit diverse veniva utilizzata internamente per memorizzare il ritardo, in minuti, fino allo spegnimento del display.

Questo imita il comportamento di control- shift- ejecte può essere utilizzato su MacBook Airs senza ejectchiave.

#!/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

5

su macOS Sierra

  • visualizzazione del sonno: pmset displaysleepnow
  • visualizzazione sveglia: caffeinate -u -t 1
  • stato test: i pmset -g powerstate IODisplayWrangler | tail -1 | cut -c29risultati <4 sono un display inattivo

un server HTTP piccolo nodo per impostare lo stato dello schermo del Mac in remoto: https://github.com/ycardon/switch-api


Puoi ottenere un codice di uscita 0 o diverso da zero per la logica condizionale facendo "echo $[$(pmset -g powerstate IODisplayWrangler | tail -1 | cut -c29) - 4]"(usando questo per true / false "is screen on?").
atwixtor

4

Esegui il comando seguente per eseguire un breve AppleScript che mette in pausa lo schermo:

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

Il nome del comando suggerisce che potrebbe mettere in pausa l'intero sistema in alcune circostanze, ma non ho potuto farlo accadere in test limitati: l'ho testato con uno script di shell che ho iniziato poco prima di eseguire questo comando e che era in esecuzione per alcuni minuti prima che "svegliassi" il sistema. Aveva continuato a stampare output per tutto il tempo.


2

Spero davvero che questa risposta non sia troppo fuori dai sentieri battuti. Il mio modo preferito di dormire, riavviare, spegnere - e soprattutto bloccare - un Mac sta usando Alfred (il lanciatore di app).

Non richiede script, conoscenza degli script o uso del terminale, il che è geniale.

Tuttavia, se VUOI specificamente usare il terminale, questa probabilmente non è la soluzione per te.


2

Wake: caffeinate -u -t 2

Dormire: pmset displaysleepnow


1

È possibile utilizzare il pmsetcomando per modificare il valore di showsleep, qualcosa del genere

pmset -a displaysleep 1

(richiede root)


1

Dai un'occhiata al maclock del progetto github open source

Per impostazione predefinita, avvia solo lo screensaver, ma puoi mettere lo schermo in sospensione con:

maclock --display

Sotto le copertine, è uno script bash che essenzialmente sta semplicemente chiamando:

pmset displaysleepnow

1

Bene, questo è vecchio, ma sembra che non ci siano davvero buone risposte a questa domanda da nessuna parte.

Ho ottenuto un AppleScript per funzionare, anche se richiede un'app di terze parti, non mantenuta e non registrabile: Extra Suite. Può essere scaricato sul vecchio sito Web dello sviluppatore .

# 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

L'ho anche incorporato in un flusso di lavoro Alfred .


1

L'ho fatto con sudo shutdown -s now.

Tieni presente che avrai bisogno del privilegio di amministratore per farlo.



-1

L'uso di Alfred (gratuito sull'AppStore) è un ottimo modo per mettere in pausa il display semplicemente scrivendo: "sleep". Non è più semplice di così.

Naturalmente Alfred fa molto di più, puoi anche riavviare, disconnettersi, svuotare il cestino, bloccare, arrestare e molte altre cose.


1
Questo non risponde alla sua necessità di farlo da remoto o tramite ssh.
TJ Luoma,

-2

Non è necessaria un'app aggiuntiva, basta usare tell application "Finder" to sleep


1
Questo non dorme l'intero computer?
Nohillside

-2

L'app Launchbar funziona altrettanto bene di Alfred. Nel mio caso, la barra spaziatrice CMD quindi S [Sospensione] - semplice e veloce


Questo non risponde alla domanda. gregseth non sta cercando un modo per mettere il computer in sospensione con un'utilità di terze parti, ma un modo per mettere in pausa il display dalla riga di comando .
Timothy Mueller-Harder,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.