如何在终端机上休眠显示器?


Answers:


71

在OS X 10.9中,您可以简单地执行pmset displaysleepnow。这将立即关闭显示器,而无需更改任何设置或使整个主机进入睡眠状态。

似乎不需要升级的特权(至少对于最新版本的OS X),但是如果收到有关特权不足的消息,则可以这样做sudo pmset displaysleepnow

根据评论者的反馈,此功能在OS X 10.8或更早版本中不可用。


22

虽然我找不到能使本机进入休眠状态的命令,但您下载的某个应用程序可以执行此操作。从这里有两个选择。

  1. 将应用程序安装到Applications文件夹,然后从Terminal或SSH运行 open /Applications/Sleep\ Display.app

  2. 右键单击“下载”文件夹中的应用程序,然后单击“显示软件包内容”。导航到Contents/MacOS并复制sleepdisplay文件。

    导航至/usr/bin(您可以使用+ + G快捷方式并在其中键入目录)并粘贴二进制文件。现在,您可以在sleepdisplay终端中或通过SSH 键入命令,显示屏将立即进入睡眠状态。

希望这可以帮助!


7

这是一个简单的shell脚本。

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

这将运行/启动您在该计算机上为屏幕保护程序启用的任何设置。


我喜欢这一个。我将此代码复制/粘贴到文件/ usr / local / bin / ss中,在其上使用chmod + x,现在可以在命令行中键入“ ss”以激活屏幕保护程序。屏幕保护程序又配置为在激活屏幕保护程序后一分钟要求输入密码(我相信,如果需要的话,可以进一步降低密码)
fwielstra 2012年

7

以下脚本将完成此工作(在Leopard和更高版本中),但必须与一起运行sudo

前提是pmset可以设置直到显示器进入睡眠状态的时间,但是问题是值0会关闭功能,而不是将延迟设置为零,而值1则是一整分钟的延迟。这里的魔力在于2 ^ 31的值似乎被存储为负零,这神奇地起到了“立即关闭显示”的作用。

在Tiger和更早的版本中,需要使用不同的幻数,因为内部使用了不同的位大小变量来存储延迟(以分钟为单位),直到显示关闭。

这种模仿行为control- - shifteject并可以在的Macbook Air无需使用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为休眠显示

一个小型节点HTTP服务器以远程设置Mac的屏幕状态:https//github.com/ycardon/switch-api


您可以通过执行"echo $[$(pmset -g powerstate IODisplayWrangler | tail -1 | cut -c29) - 4]"此操作来获得0或非零的条件逻辑退出代码(使用此命令可设置为true / false“屏幕是否打开?”)。
atwixtor

4

运行以下命令以执行使显示进入休眠状态的简短AppleScript:

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

该命令名称表明它可能会使整个系统在某些情况下进入睡眠状态,但是在有限的测试中我无法做到这一点:我使用了我在执行该命令前不久启动的shell脚本对其进行了测试,并且该脚本已经运行了好几次分钟,直到我“唤醒”系统。它在整个时间内一直打印输出。


2

真的希望这个答案不会太过人为。我最喜欢的睡眠,重新启动,关闭(最重要的是锁定)的方式是,Mac正在使用Alfred(应用启动器)。

它不需要任何脚本,脚本知识或使用终端,这非常出色。

但是,如果您特别想使用终端,那么这可能不是您的解决方案。


2

唤醒: caffeinate -u -t 2

睡觉: pmset displaysleepnow


1

您可以使用pmset命令更改displaysleep的值,例如

pmset -a displaysleep 1

(需要root)


1

看看开源的github项目maclock

默认情况下,它只是启动屏幕保护程序,但是您可以通过以下方式使显示器进入休眠状态:

maclock --display

在幕后,它实际上是一个bash脚本,它仅调用:

pmset displaysleepnow

1

好吧,这是一个古老的问题,但是似乎在任何地方都没有针对这个问题的真正好的答案。

我已经使用了AppleScript,尽管它需要第三方,未维护且不可注册的应用程序-Extra Suites。可以在开发人员的旧网站上下载。

# 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免费获得)是一种很好的显示方式,只需编写以下文字即可:“ sleep”。没有比这更简单的了。

当然,阿尔弗雷德(Alfred)所能做的还远远不止这些,您还可以重新启动,注销,清空垃圾箱,锁定,关闭等等。


1
这不能满足他远程或通过ssh执行此操作的需要。
TJ罗马

-2

无需额外的应用程序,只需使用 tell application "Finder" to sleep


1
这不睡整个计算机吗?
nohillside

-2

应用启动栏与Alfred一样好用。就我而言,CMD空格键然后是S [Sleep]-简单快速


这不能回答问题。gregseth不是在寻找使计算机通过第三方实用程序进入睡眠状态的方法,而是在从命令行使显示器进入睡眠状态的方法。
蒂莫西·穆勒-哈德
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.