ฉันจะนอนหน้าจอจากเทอร์มินัลได้อย่างไร


49

ฉันต้องการปิดหน้าจอของฉันจากบรรทัดคำสั่ง

ฉันรู้ว่ามีแป้นพิมพ์ลัดctrl+ + แต่ฉันต้องการทำจาก shell script หรือจากระยะไกล

มีวิธีหรือไม่?


สิ่งนี้อาจช่วยได้: apple.stackexchange.com/questions/34884/…
Jorge

คุณสามารถอ่านได้ที่นี่: stackoverflow.com/questions/1239439/…
jm666

คำตอบ:


71

ใน OS X 10.9 pmset displaysleepnowคุณก็สามารถทำได้ สิ่งนี้จะปิดจอแสดงผลทันทีโดยไม่เปลี่ยนการตั้งค่าใด ๆ หรือทำให้ทั้งโฮสต์เข้าสู่โหมดสลีป

สิทธิพิเศษเพิ่มขึ้นดูเหมือนจะไม่จำเป็นต้องใช้ (อย่างน้อยกับรุ่นล่าสุดของ OS X) sudo pmset displaysleepnowแต่ถ้าคุณได้รับข้อความเกี่ยวกับสิทธิพิเศษไม่เพียงพอคุณสามารถทำ

ตามความคิดเห็นจากผู้วิจารณ์สิ่งนี้ไม่สามารถใช้ได้ใน OS X 10.8 หรือก่อนหน้า


22

แม้ว่าฉันจะไม่สามารถค้นหาคำสั่งที่จะทำให้จอแสดงผลติดขัดได้ แต่มีแอพที่คุณดาวน์โหลดซึ่งจะทำ มีสองตัวเลือกจากที่นี่

  1. ติดตั้งแอพลงในโฟลเดอร์ Applications และจาก Terminal หรือ SSH run open /Applications/Sleep\ Display.app

  2. คลิกขวาที่แอพจากโฟลเดอร์ดาวน์โหลดและคลิก "แสดงเนื้อหาแพ็คเกจ" นำทางไปContents/MacOSและคัดลอกไฟล์ sleepdisplay

    นำทางไปยัง/usr/bin(คุณสามารถใช้+ + Gทางลัดและพิมพ์ไดเรกทอรีใน) และวางไฟล์ไบนารี ตอนนี้คุณจะสามารถพิมพ์คำสั่งsleepdisplayลงในเทอร์มินัลหรือผ่าน SSH และจอแสดงผลจะเข้าสู่โหมดสลีปทันที

หวังว่านี่จะช่วยได้!


7

นี่คือเชลล์สคริปต์แบบง่ายๆที่จะทำ

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

สิ่งนี้จะเรียกใช้ / เริ่มการตั้งค่าใด ๆ ที่คุณเปิดใช้งานสำหรับ Screen Saver บนคอมพิวเตอร์


ฉันชอบอันนี้ ฉันคัดลอก / วางรหัสนี้ลงในไฟล์ / usr / local / bin / ss, chmod + x บนและตอนนี้สามารถพิมพ์ 'ss' ใน commandline เพื่อให้โปรแกรมรักษาหน้าจอเปิดใช้งาน โปรแกรมรักษาหน้าจอในการเปิดการกำหนดค่าให้ถามรหัสผ่านหนึ่งนาทีหลังจากการเปิดใช้งานโปรแกรมรักษาหน้าจอ (ซึ่งอาจจะลดลงต่อไปผมเชื่อว่าถ้าจำเป็น)
fwielstra

7

สคริปต์ต่อไปนี้จะทำงาน (ใน Leopard และใหม่กว่า) แต่ต้องรันด้วยsudo:

หลักฐานคือpmsetสามารถตั้งเวลาได้จนกว่าจอแสดงผลสลีป แต่ปัญหาคือค่า 0 ปิดคุณลักษณะแทนที่จะตั้งค่าการหน่วงเวลาเป็นศูนย์และค่า 1 คือการหน่วงเวลาหนึ่งนาทีเต็ม เวทย์มนตร์ที่นี่คือค่า 2 ^ 31 ดูเหมือนว่าจะถูกเก็บไว้เป็นศูนย์เชิงลบซึ่งทำหน้าที่เป็น "ปิดจอแสดงผลทันที" อย่างน่าอัศจรรย์

ในไทเกอร์และก่อนหน้านั้นจำเป็นต้องใช้หมายเลขเวทย์มนตร์ที่แตกต่างกันเนื่องจากมีการใช้ตัวแปรขนาดบิตที่แตกต่างกันภายในเพื่อเก็บการหน่วงเวลาเป็นนาทีจนกระทั่งจอแสดงผลปิด

นี่เป็นการเลียนแบบพฤติกรรมของcontrol- shift- ejectและสามารถใช้กับ 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


คุณสามารถรับรหัสทางออก 0 หรือไม่เป็นศูนย์สำหรับตรรกะเชิงเงื่อนไขโดยทำ"echo $[$(pmset -g powerstate IODisplayWrangler | tail -1 | cut -c29) - 4]"(ใช้สิ่งนี้เป็นจริง / เท็จ "เปิดหน้าจอหรือไม่")
atwixtor

4

รันคำสั่งต่อไปนี้เพื่อรัน AppleScript แบบสั้นที่ทำให้หน้าจอเข้าสู่โหมดสลีป

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

ชื่อคำสั่งแนะนำว่ามันอาจทำให้ทั้งระบบเข้าสู่โหมดสลีปภายใต้สถานการณ์บางอย่าง แต่ฉันไม่สามารถทำให้มันเกิดขึ้นในการทดสอบที่ จำกัด : ฉันทดสอบด้วยเชลล์สคริปต์ที่ฉันเริ่มไม่นานก่อนที่จะดำเนินการคำสั่งนี้ นาทีจนกระทั่งฉัน "ปลุก" ระบบ มันยังคงพิมพ์งานออกมาตลอดเวลา


2

หวังว่าคำตอบนี้จะไม่ออกนอกเส้นทางที่ถูกตีเกินไป วิธีที่ฉันชอบในการนอนหลับรีสตาร์ทปิด - และล็อคที่สำคัญที่สุด - Mac ใช้อัลเฟรด (ตัวเรียกใช้งานแอป)

ไม่ต้องใช้สคริปต์ใด ๆ ความรู้เกี่ยวกับสคริปต์หรือการใช้เทอร์มินัลซึ่งยอดเยี่ยม

อย่างไรก็ตามหากคุณต้องการใช้เทอร์มินัลโดยเฉพาะนี่อาจไม่ใช่วิธีแก้ปัญหาสำหรับคุณ



1

คุณสามารถใช้pmsetคำสั่งเพื่อเปลี่ยนค่าสำหรับการแสดงผลบางอย่างเช่น

pmset -a displaysleep 1

(ต้องการรูท)


1

ดูที่Macithโครงการ github โอเพนซอร์ส

ตามค่าเริ่มต้นมันเพิ่งเปิดตัวสกรีนเซฟเวอร์ แต่คุณสามารถทำให้จอแสดงผลเข้าสู่โหมดสลีปด้วย:

maclock --display

ภายใต้หน้าปกมันเป็นสคริปต์ทุบตีที่เรียกว่า:

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

การใช้อัลเฟรด (ฟรีที่ AppStore) เป็นวิธีที่ยอดเยี่ยมในการทำให้จอแสดงผลเข้าสู่โหมดสลีปโดยการเขียน: "sleep" ไม่ได้ง่ายกว่านั้น

แน่นอนว่าอัลเฟรดทำอะไรได้มากกว่านั้นคุณสามารถรีสตาร์ทล็อกเอาต์ถังขยะเปล่าล็อคปิดเครื่องและอื่น ๆ อีกมากมาย


1
นี่ไม่ได้ตอบสนองความต้องการของเขาในการทำสิ่งนี้จากระยะไกลหรือผ่านทาง ssh
TJ Luoma

-2

ไม่จำเป็นต้องมีแอปเสริมเพียงใช้ tell application "Finder" to sleep


1
นี่ไม่ได้ทำให้คอมพิวเตอร์ทั้งเครื่องใช่ไหม
nohillside

-2

แอป Launchbar ทำงานได้ดีเท่า ๆ กับ Alfred ในกรณีของฉันสเปซบาร์ CMD ตามด้วย S [Sleep] - ง่ายและเร็ว


นี่ไม่ได้ตอบคำถาม gregseth ไม่ได้มองหาวิธีที่จะนำคอมพิวเตอร์ไปนอนด้วยการใช้ประโยชน์ของบุคคลที่สาม แต่วิธีการที่จะนำการแสดงผลจะนอนหลับจากบรรทัดคำสั่ง
Timothy Mueller-Harder
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.