ターミナルからディスプレイをスリープさせるにはどうすればよいですか?


49

コマンドラインから画面をオフにできるようにしたいのですが。

キーボードショートカットがctrl+ + あることは知っていますが、シェルスクリプトから、またはリモートで実行したいです。

方法はありますか?


これが役立つ場合があります: apple.stackexchange.com/questions/34884/…-
ホルヘ

これも読むことができます:stackoverflow.com/questions/1239439/…-jm666
1

回答:


71

OS X 10.9では、単に行うことができますpmset displaysleepnow。これにより、設定を変更したり、ホスト全体をスリープ状態にしたりせずに、すぐにディスプレイがオフになります。

エスカレートされた特権は(少なくとも最新バージョンのOS Xでは)必要ではないようですが、不十分な特権に関するメッセージが表示された場合は、できますsudo pmset displaysleepnow

コメント者からのフィードバックに基づいて、これはOS X 10.8以前では利用できません。


22

表示をネイティブでスリープさせるコマンドを見つけることができませんでしたが、ダウンロードするアプリがあります。ここから2つのオプションがあります。

  1. アプリケーションをアプリケーションフォルダーにインストールし、ターミナルまたはSSHから実行します open /Applications/Sleep\ Display.app

  2. ダウンロードフォルダーからアプリを右クリックし、[パッケージの内容を表示]をクリックします。Contents/MacOSsleepdisplayファイルに移動してコピーします。

    移動に/usr/bin(あなたが使用することができます+ + Gのショートカットをしているディレクトリを入力します)とバイナリファイルを貼り付けます。これで、sleepdisplayターミナルにコマンドを入力するか、SSHを介してコマンドを入力できるようになり、ディスプレイはすぐにスリープ状態になります。

お役に立てれば!


7

これを行う簡単なシェルスクリプトを次に示します。

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

これにより、そのコンピューターでスクリーンセーバーに対して有効にした設定が実行/開始されます。


私はこれが好きです。このコードをファイル/ usr / local / bin / ssにコピー/貼り付けし、その上でchmod + xを実行すると、コマンドラインで「ss」と入力してスクリーンセーバーをアクティブにできます。スクリーンセーバーは、スクリーンセーバーをアクティブにしてから1分後にパスワードを要求するように構成されています(必要に応じてさらに下げることができます)
-fwielstra

7

次のスクリプトは(Leopard以降で)ジョブを実行しますが、次を使用して実行する必要がありますsudo

前提は、pmsetディスプレイがスリープするまでの時間を設定できることですが、問題は、遅延をゼロに設定するのではなく、値を0にすると機能がオフになることです。ここでの魔法は、2 ^ 31の値が負のゼロとして格納されているように見えることです。

Tiger以前では、ディスプレイがオフになるまでの遅延を分単位で保存するために異なるビットサイズの変数が内部的に使用されていたため、異なるマジック番号が必要でした。

この模倣の行動control- - shiftejectとせずにMacBookのエアーズ上で使用することができますejectキー。

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

macOS Sierraで

  • スリープ表示: pmset displaysleepnow
  • ウェイクディスプレイ: caffeinate -u -t 1
  • テスト状態:pmset -g powerstate IODisplayWrangler | tail -1 | cut -c29結果<4はスリープ表示です

Macの画面ステータスをリモートで設定する小さなノードのHTTPサーバー:https : //github.com/ycardon/switch-api


実行することにより、条件付きロジックの0またはゼロ以外の終了コードを取得できます"echo $[$(pmset -g powerstate IODisplayWrangler | tail -1 | cut -c29) - 4]"(これを使用して、「画面オン?」をtrue / falseに設定します)。
atwixtor

4

次のコマンドを実行して、ディスプレイをスリープ状態にする短いAppleScriptを実行します。

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

コマンド名は、特定の状況下でシステム全体をスリープ状態にする可能性があることを示唆しています、限られたテストでそれを実現することはできませんでした:このコマンドを実行する直前に開始したシェルスクリプトでテストし、それがいくつか実行されていましたシステムを「目覚めさせる」まで数分。ずっと出力を印刷し続けていました。


2

本当にこの答えがbeatられた道から外れていないことを願っています。Macがスリープ、再起動、シャットダウン、そして最も重要なロックを行うための私のお気に入りの方法は、Alfred(アプリランチャー)を使用していることです。

スクリプト、スクリプトの知識、または端末の使用は必要ありません。これは素晴らしいです。

ただし、特にターミナルを使用したい場合、これはおそらくあなたのための解決策ではありません。



1

このpmsetコマンドを使用して、displaysleepの値を変更できます。

pmset -a displaysleep 1

(ルートが必要です)


1

オープンソースのgithubプロジェクトmaclockをご覧ください

デフォルトでは、スクリーンセーバーを起動するだけですが、次の方法でディスプレイをスリープ状態にできます。

maclock --display

カバーの下では、それは基本的に単に呼び出しているbashスクリプトです:

pmset displaysleepnow

1

まあ、これは古いものですが、この質問に対する良い答えはどこにもないようです。

AppleScriptが動作するようになりましたが、サードパーティ製の、メンテナンスされていない、登録できないアプリ、Extra Suitesが必要です。開発者の古いWebサイトからダウンロードできます。

# 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

また、Alfred Workflowに組み込みまし


1

私はそれをやったsudo shutdown -s now

ただし、これを行うには管理者権限が必要になることに注意してください。



-1

Alfred(AppStoreで無料)を使用すると、「スリープ」と書くだけでディスプレイをスリープ状態にできます。それよりも簡単になりません。

もちろん、Alfredはそれ以上のことを行います。また、再起動、ログアウト、ゴミ箱を空にする、ロック、シャットダウンなど、さまざまなことができます。


1
これは、リモートまたはsshを介してこれを行う必要性に対処しません。
TJルオマ

-2

追加のアプリは必要ありません。使用するだけです tell application "Finder" to sleep


1
これはコンピューター全体をスリープ状態にしませんか?
nohillside

-2

アプリのLaunchbarはAlfredと同様に機能します。私の場合、CMDスペースバー、次にS [スリープ]-シンプルで高速


これは質問に答えません。gregsethは、サードパーティのユーティリティを使用してコンピューターをスリープ状態にする方法ではなく、コマンドラインからディスプレイをスリープ状態にする方法を探しています。
ティモシーミューラー-ハーダー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.