Vorrei poter spegnere lo schermo dalla riga di comando.
So che c'è la scorciatoia da tastiera ctrl+ ⇧+ ⏏ma voglio farlo da uno script di shell o da remoto.
C'è un modo?
Vorrei poter spegnere lo schermo dalla riga di comando.
So che c'è la scorciatoia da tastiera ctrl+ ⇧+ ⏏ma voglio farlo da uno script di shell o da remoto.
C'è un modo?
Risposte:
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.
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.
Installa l'app nella cartella Applicazioni e dal terminale o esegui SSH open /Applications/Sleep\ Display.app
Fare clic destro sull'app dalla cartella Download e fare clic su "Mostra contenuto pacchetto". Passare a Contents/MacOS
e 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 sleepdisplay
in Terminale o tramite SSH e il display andrà immediatamente in sospensione.
Spero che sia di aiuto!
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.
Il seguente script farà il lavoro (in Leopard e successivi), ma deve essere eseguito con sudo
:
La premessa è che pmset
può 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
su macOS Sierra
pmset displaysleepnow
caffeinate -u -t 1
pmset -g powerstate IODisplayWrangler | tail -1 | cut -c29
risultati <4 sono un display inattivoun server HTTP piccolo nodo per impostare lo stato dello schermo del Mac in remoto: https://github.com/ycardon/switch-api
"echo $[$(pmset -g powerstate IODisplayWrangler | tail -1 | cut -c29) - 4]"
(usando questo per true / false "is screen on?").
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.
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.
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
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 .
Ecco qui -
sudo su
pmset displaysleepnow
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.
Non è necessaria un'app aggiuntiva, basta usare tell application "Finder" to sleep
L'app Launchbar funziona altrettanto bene di Alfred. Nel mio caso, la barra spaziatrice CMD quindi S [Sospensione] - semplice e veloce