Làm thế nào tôi có thể ngủ màn hình từ Terminal?


Câu trả lời:


71

Trong OS X 10.9, bạn chỉ cần làm pmset displaysleepnow. Điều này sẽ ngay lập tức tắt màn hình của bạn mà không thay đổi bất kỳ cài đặt nào của bạn hoặc đưa toàn bộ máy chủ vào chế độ ngủ.

Các đặc quyền nâng cao dường như không được yêu cầu (ít nhất là với các phiên bản OS X gần đây), nhưng nếu bạn nhận được thông báo về các đặc quyền không đầy đủ, bạn có thể làm sudo pmset displaysleepnow.

Dựa trên phản hồi từ những người bình luận, điều này không có sẵn trong OS X 10.8 trở về trước.


22

Mặc dù tôi không thể tìm thấy một lệnh sẽ ngủ màn hình nguyên bản, nhưng có một ứng dụng bạn tải xuống sẽ thực hiện. Có hai lựa chọn từ đây.

  1. Cài đặt ứng dụng vào thư mục Ứng dụng và từ Terminal hoặc SSH chạy open /Applications/Sleep\ Display.app

  2. Nhấp chuột phải vào ứng dụng từ thư mục Tải xuống và nhấp vào "Hiển thị nội dung gói". Điều hướng đến Contents/MacOSvà sao chép tập tin ngủ ngon.

    Navigate to /usr/bin(bạn có thể sử dụng + + Gphím tắt và gõ thư mục trong) và dán các tập tin nhị phân. Bây giờ bạn sẽ có thể nhập lệnh sleepdisplayvào Terminal hoặc thông qua SSH và màn hình sẽ ngay lập tức chuyển sang chế độ ngủ.

Hi vọng điêu nay co ich!


7

Đây là một kịch bản shell đơn giản sẽ làm điều đó.

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

Điều này sẽ chạy / bắt đầu bất kỳ cài đặt nào bạn đã bật cho Screen Saver trên máy tính đó.


Tôi thích cái này. Tôi sao chép / dán mã này vào một tệp / usr / local / bin / ss, chmod + x trên đó và bây giờ có thể nhập 'ss' trong một dòng lệnh để kích hoạt trình bảo vệ màn hình. Lần lượt trình bảo vệ màn hình được định cấu hình để yêu cầu mật khẩu một phút sau khi kích hoạt trình bảo vệ màn hình (có thể hạ thấp hơn nữa, tôi tin, nếu cần)
fwielstra

7

Kịch bản sau đây sẽ thực hiện công việc (trong Leopard và sau này), nhưng nó phải được chạy với sudo:

Tiền đề là pmsetcó thể đặt thời gian cho đến khi hiển thị chế độ ngủ, nhưng vấn đề là giá trị 0 sẽ tắt tính năng, thay vì đặt độ trễ thành 0 và giá trị 1 là trễ toàn bộ một phút. Điều kỳ diệu ở đây là giá trị 2 ^ 31 dường như được lưu dưới dạng số 0 âm, có chức năng kỳ diệu là "tắt màn hình ngay lập tức".

Trong Tiger và trước đó, một số ma thuật khác là cần thiết, bởi vì một biến có kích thước bit khác nhau được sử dụng bên trong để lưu trữ độ trễ, tính bằng phút, cho đến khi màn hình tắt.

Điều này bắt chước hành vi của control- shift- eject, và có thể được sử dụng trên MacBook Air mà không cần ejectchìa khóa.

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

trên macOS Sierra

  • màn hình ngủ: pmset displaysleepnow
  • màn hình hiển thị: caffeinate -u -t 1
  • trạng thái thử nghiệm: pmset -g powerstate IODisplayWrangler | tail -1 | cut -c29kết quả <4 là màn hình ngủ

một máy chủ HTTP nút nhỏ để đặt trạng thái màn hình cho máy Mac của bạn từ xa: https://github.com/ycardon/switch-api


Bạn có thể nhận được mã thoát 0 hoặc khác không cho logic có điều kiện bằng cách thực hiện "echo $[$(pmset -g powerstate IODisplayWrangler | tail -1 | cut -c29) - 4]"(sử dụng mã này thành true / false "trên màn hình?").
atwixtor

4

Chạy lệnh sau để thực thi một AppleScript ngắn đặt màn hình ở chế độ ngủ:

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

Tên lệnh gợi ý rằng nó có thể khiến toàn bộ hệ thống ngủ trong một số trường hợp, nhưng tôi không thể thực hiện điều đó trong thử nghiệm giới hạn: Tôi đã thử nghiệm nó với một kịch bản shell tôi đã bắt đầu ngay trước khi thực hiện lệnh này và nó đã chạy được một vài vài phút cho đến khi tôi "đánh thức" hệ thống. Nó đã tiếp tục in đầu ra trong suốt thời gian.


2

Thực sự hy vọng câu trả lời này không quá lạc đề. Cách ưa thích của tôi để ngủ, khởi động lại, tắt máy - và quan trọng nhất là khóa - máy Mac đang sử dụng Alfred (trình khởi chạy ứng dụng).

Nó không yêu cầu bất kỳ kịch bản, kiến ​​thức về các kịch bản hoặc sử dụng thiết bị đầu cuối, đó là tuyệt vời.

Tuy nhiên, nếu bạn đặc biệt MUỐN sử dụng thiết bị đầu cuối, đây có lẽ không phải là giải pháp cho bạn.



1

Bạn có thể sử dụng pmsetlệnh để thay đổi giá trị cho màn hình hiển thị, đại loại như

pmset -a displaysleep 1

(yêu cầu root)


1

Hãy xem maclock dự án github mã nguồn mở

Theo mặc định, nó chỉ khởi chạy trình bảo vệ màn hình, nhưng bạn có thể đặt màn hình ở chế độ ngủ với:

maclock --display

Dưới vỏ bọc, đó là một tập lệnh bash về cơ bản chỉ là gọi:

pmset displaysleepnow

1

Chà, đây là một câu hỏi cũ, nhưng dường như không có câu trả lời thực sự tốt cho câu hỏi này ở bất cứ đâu.

Tôi đã nhận được một AppleScript để hoạt động, mặc dù nó đòi hỏi phải có ứng dụng của bên thứ ba, không rõ ràng và không thể đăng ký. Nó có thể được tải xuống trên trang web cũ của nhà phát triển .

# 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

Tôi cũng đã kết hợp nó vào Luồng công việc Alfred .


1

Tôi đã làm nó với sudo shutdown -s now.

Lưu ý rằng bạn sẽ cần đặc quyền quản trị viên để làm điều này mặc dù.



-1

Sử dụng Alfred (miễn phí tại AppStore) là một cách tuyệt vời để đưa màn hình vào chế độ ngủ chỉ bằng cách viết: "ngủ". Không đơn giản hơn thế.

Tất nhiên Alfred làm được nhiều hơn thế, bạn cũng có thể khởi động lại, đăng xuất, bỏ trống, khóa, tắt máy và nhiều thứ khác.


1
Điều này không giải quyết nhu cầu của anh ta để làm điều này từ xa hoặc thông qua ssh.
TJ Luoma


-2

Launchbar ứng dụng hoạt động tốt như Alfred. Trong trường hợp của tôi, phím cách CMD sau đó S [Ngủ] - đơn giản và nhanh chóng


Điều này không trả lời câu hỏi. gregseth không tìm cách đưa máy tính vào chế độ ngủ với tiện ích của bên thứ ba, mà là cách để màn hình hiển thị ngủ từ dòng lệnh .
Timothy Mueller-Harder
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.