ฉันต้องการปิดหน้าจอของฉันจากบรรทัดคำสั่ง
ฉันรู้ว่ามีแป้นพิมพ์ลัดctrl+ ⇧+ ⏏แต่ฉันต้องการทำจาก shell script หรือจากระยะไกล
มีวิธีหรือไม่?
ฉันต้องการปิดหน้าจอของฉันจากบรรทัดคำสั่ง
ฉันรู้ว่ามีแป้นพิมพ์ลัดctrl+ ⇧+ ⏏แต่ฉันต้องการทำจาก shell script หรือจากระยะไกล
มีวิธีหรือไม่?
คำตอบ:
ใน OS X 10.9 pmset displaysleepnow
คุณก็สามารถทำได้ สิ่งนี้จะปิดจอแสดงผลทันทีโดยไม่เปลี่ยนการตั้งค่าใด ๆ หรือทำให้ทั้งโฮสต์เข้าสู่โหมดสลีป
สิทธิพิเศษเพิ่มขึ้นดูเหมือนจะไม่จำเป็นต้องใช้ (อย่างน้อยกับรุ่นล่าสุดของ OS X) sudo pmset displaysleepnow
แต่ถ้าคุณได้รับข้อความเกี่ยวกับสิทธิพิเศษไม่เพียงพอคุณสามารถทำ
ตามความคิดเห็นจากผู้วิจารณ์สิ่งนี้ไม่สามารถใช้ได้ใน OS X 10.8 หรือก่อนหน้า
แม้ว่าฉันจะไม่สามารถค้นหาคำสั่งที่จะทำให้จอแสดงผลติดขัดได้ แต่มีแอพที่คุณดาวน์โหลดซึ่งจะทำ มีสองตัวเลือกจากที่นี่
ติดตั้งแอพลงในโฟลเดอร์ Applications และจาก Terminal หรือ SSH run open /Applications/Sleep\ Display.app
คลิกขวาที่แอพจากโฟลเดอร์ดาวน์โหลดและคลิก "แสดงเนื้อหาแพ็คเกจ" นำทางไปContents/MacOS
และคัดลอกไฟล์ sleepdisplay
นำทางไปยัง/usr/bin
(คุณสามารถใช้⇧+ ⌘+ Gทางลัดและพิมพ์ไดเรกทอรีใน) และวางไฟล์ไบนารี ตอนนี้คุณจะสามารถพิมพ์คำสั่งsleepdisplay
ลงในเทอร์มินัลหรือผ่าน SSH และจอแสดงผลจะเข้าสู่โหมดสลีปทันที
หวังว่านี่จะช่วยได้!
นี่คือเชลล์สคริปต์แบบง่ายๆที่จะทำ
#!/usr/bin/env bash
open /System/Library/Frameworks/ScreenSaver.framework/Versions/A/Resources/ScreenSaverEngine.app
สิ่งนี้จะเรียกใช้ / เริ่มการตั้งค่าใด ๆ ที่คุณเปิดใช้งานสำหรับ Screen Saver บนคอมพิวเตอร์
สคริปต์ต่อไปนี้จะทำงาน (ใน 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
บน 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]"
(ใช้สิ่งนี้เป็นจริง / เท็จ "เปิดหน้าจอหรือไม่")
รันคำสั่งต่อไปนี้เพื่อรัน AppleScript แบบสั้นที่ทำให้หน้าจอเข้าสู่โหมดสลีป
osascript -e 'tell application "System Events" to sleep'
ชื่อคำสั่งแนะนำว่ามันอาจทำให้ทั้งระบบเข้าสู่โหมดสลีปภายใต้สถานการณ์บางอย่าง แต่ฉันไม่สามารถทำให้มันเกิดขึ้นในการทดสอบที่ จำกัด : ฉันทดสอบด้วยเชลล์สคริปต์ที่ฉันเริ่มไม่นานก่อนที่จะดำเนินการคำสั่งนี้ นาทีจนกระทั่งฉัน "ปลุก" ระบบ มันยังคงพิมพ์งานออกมาตลอดเวลา
หวังว่าคำตอบนี้จะไม่ออกนอกเส้นทางที่ถูกตีเกินไป วิธีที่ฉันชอบในการนอนหลับรีสตาร์ทปิด - และล็อคที่สำคัญที่สุด - Mac ใช้อัลเฟรด (ตัวเรียกใช้งานแอป)
ไม่ต้องใช้สคริปต์ใด ๆ ความรู้เกี่ยวกับสคริปต์หรือการใช้เทอร์มินัลซึ่งยอดเยี่ยม
อย่างไรก็ตามหากคุณต้องการใช้เทอร์มินัลโดยเฉพาะนี่อาจไม่ใช่วิธีแก้ปัญหาสำหรับคุณ
ตื่น: caffeinate -u -t 2
นอน: pmset displaysleepnow
คุณสามารถใช้pmset
คำสั่งเพื่อเปลี่ยนค่าสำหรับการแสดงผลบางอย่างเช่น
pmset -a displaysleep 1
(ต้องการรูท)
ดูที่Macithโครงการ github โอเพนซอร์ส
ตามค่าเริ่มต้นมันเพิ่งเปิดตัวสกรีนเซฟเวอร์ แต่คุณสามารถทำให้จอแสดงผลเข้าสู่โหมดสลีปด้วย:
maclock --display
ภายใต้หน้าปกมันเป็นสคริปต์ทุบตีที่เรียกว่า:
pmset displaysleepnow
นี่มันเก่า แต่ดูเหมือนว่าจะไม่มีคำตอบที่ดีสำหรับคำถามนี้เลย
ฉันได้รับ 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ด้วย
sudo shutdown -s now
ฉันไม่ได้กับ
โปรดทราบว่าคุณจะต้องมีสิทธิ์ผู้ดูแลระบบในการดำเนินการนี้
ไปเลย -
sudo su
pmset displaysleepnow
การใช้อัลเฟรด (ฟรีที่ AppStore) เป็นวิธีที่ยอดเยี่ยมในการทำให้จอแสดงผลเข้าสู่โหมดสลีปโดยการเขียน: "sleep" ไม่ได้ง่ายกว่านั้น
แน่นอนว่าอัลเฟรดทำอะไรได้มากกว่านั้นคุณสามารถรีสตาร์ทล็อกเอาต์ถังขยะเปล่าล็อคปิดเครื่องและอื่น ๆ อีกมากมาย
ไม่จำเป็นต้องมีแอปเสริมเพียงใช้ tell application "Finder" to sleep
แอป Launchbar ทำงานได้ดีเท่า ๆ กับ Alfred ในกรณีของฉันสเปซบาร์ CMD ตามด้วย S [Sleep] - ง่ายและเร็ว