Come posso dormire il display dal terminale?

41

Mi piacerebbe essere in grado di 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?

    
posta gregseth 06.01.2012 - 00:34
fonte

15 risposte

62

In OS X 10.9, puoi semplicemente fare pmset displaysleepnow . Questo spegnerà immediatamente il display senza modificare nessuna delle impostazioni o mettendo l'intero host in modalità di sospensione.

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

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

    
risposta data 11.11.2013 - 04:51
fonte
22

Sebbene non sia stato possibile trovare un comando che interrompa la visualizzazione in modo nativo, esiste un app scarichi che lo farà. Ci sono due opzioni da qui.

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

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

    Vai a /usr/bin (puoi usare il + + G scorciatoia e digitare la directory in) e incollare il binario file. Ora sarai in grado di digitare il comando sleepdisplay in Terminale o tramite SSH e il display andrà immediatamente in stop.

Spero che questo aiuti!

    
risposta data 12.01.2012 - 15:53
fonte
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à le impostazioni che hai abilitato per Screen Saver su quel computer.

    
risposta data 12.01.2012 - 23:34
fonte
6

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

La premessa è che pmset può impostare un tempo prima che il display si interrompa, ma il problema è che un valore pari a 0 disattiva la funzione invece di impostare il ritardo su zero e il valore 1 è un ritardo di un minuto intero. La magia qui è che un valore di 2 ^ 31 sembra essere memorizzato come zero negativo, che magicamente funziona come "spegni immediatamente il display". In Tiger e in precedenza, era necessario un numero magico diverso, perché una variabile di dimensioni bit diverse veniva usata internamente per memorizzare il ritardo, in minuti, finché il display non si spegne.

Questo imita il comportamento di control-shift-eject e può essere utilizzato su MacBook Air senza un tasto di espulsione.

#!/bin/bash
original_setting='/usr/bin/pmset -g | /usr/bin/grep displaysleep | /usr/bin/awk '{print $2}''
magic_number=2147483648
/usr/bin/pmset -a displaysleep $magic_number; sleep 1; /usr/bin/pmset -a displaysleep $original_setting
    
risposta data 14.01.2012 - 01:35
fonte
4

Esegui il seguente comando per eseguire un breve AppleScript che interrompe la visualizzazione:

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

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

    
risposta data 06.01.2012 - 01:34
fonte
3

su macOS Sierra

  • visualizzazione del sonno: pmset displaysleepnow
  • visualizzazione scia: caffeinate -u -t 1
  • stato di test:% risultati dipmset -g powerstate IODisplayWrangler | tail -1 | cut -c29 < 4 sono display di sospensione

un server HTTP di piccolo nodo per impostare in remoto lo stato del tuo Mac: link

    
risposta data 24.05.2017 - 20:31
fonte
2

Spero davvero che questa risposta non sia troppo battuta. Il mio modo preferito di dormire, riavviare, spegnere e, soprattutto, bloccare: un Mac utilizza Alfred (l'avvio delle app).

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

Tuttavia, se si desidera utilizzare specificamente il terminale, questa probabilmente non è la soluzione adatta a te.

    
risposta data 16.01.2012 - 16:53
fonte
2

Wake: caffeinate -u -t 2

Sonno: pmset displaysleepnow

    
risposta data 08.05.2016 - 09:32
fonte
1

Potresti usare il comando pmset per cambiare il valore per displaysleep, qualcosa come

pmset -a displaysleep 1

(richiede root)

    
risposta data 12.01.2012 - 17:24
fonte
1

Dai un'occhiata al progetto github open source maclock

Per impostazione predefinita, avvia semplicemente lo screensaver, ma puoi mettere lo schermo in modalità di sospensione con:

maclock --display

Sotto le copertine, si tratta di uno script bash che essenzialmente sta solo chiamando:

pmset displaysleepnow
    
risposta data 06.05.2016 - 05:38
fonte
1

Bene, questo è vecchio, ma sembra che non ci siano risposte veramente valide per questa domanda ovunque.

Ho ottenuto un AppleScript per funzionare, anche se richiede un'app-Suite extra di terze parti, non più salvate e non registrabili. Può essere scaricato nel 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 Alfred Workflow .

    
risposta data 10.06.2013 - 07:00
fonte
1

L'ho fatto con sudo shutdown -s now .

Tieni presente che per farlo dovrai comunque disporre del privilegio di amministratore.

    
risposta data 08.05.2016 - 12:53
fonte
-1

L'utilizzo di Alfred (gratuito su AppStore) è un ottimo modo per addormentare lo schermo semplicemente scrivendo: "sleep". Non diventa più semplice di così.

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

    
risposta data 16.01.2012 - 20:32
fonte
-2

Non è necessaria un'app extra, usa solo tell application "Finder" to sleep

    
risposta data 08.06.2014 - 21:22
fonte
-2

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

    
risposta data 25.11.2016 - 17:57
fonte

Leggi altre domande sui tag