wuc wrote:
คุณสามารถใช้ได้
pmset schedule wake "01/01/2012 20:00:00"
เพื่อปลุกจอแสดงผลขณะหลับบน Mac "ตื่น" เป็นอย่างอื่น แทนที่ส่วนวันที่ / เวลาด้วยเวลาปัจจุบันแน่นอน
อย่างไรก็ตามนั่นไม่ได้ผลสำหรับฉันใน iMac ประมาณปี 2008 ที่ใช้ 10.9.1 หรือ MacBook Air รุ่น 2010 ที่ช้าที่ใช้งาน 10.9.2 ฉันไม่แน่ใจว่าสิ่งนี้เกี่ยวข้องกับการจัดการพลังงานของ Mavericks หรือฮาร์ดแวร์หรือไม่
ฉันสามารถทำให้มันทำงานได้โดยการตั้งค่าเวลาปลุกเป็น 15 วินาทีในอนาคต บางครั้งฉันสามารถทำให้มันทำงานกับการตั้งค่าที่ต่ำเป็น 12 หรือ 13 แต่ไม่น่าเชื่อถือ แต่อาจมีปัจจัยอื่น ๆ ที่ฉันไม่ได้ตระหนักในเวลานั้น แต่ทำงานได้ 15 ข้อดังนั้นฉันจึงใช้ 15
แต่คุณจะคำนวณ 15 วินาทีในอนาคตโดยทางโปรแกรมได้อย่างไร
ฉันใช้gdate
จากแพ็คเกจ GNU Coreutils ( date
ใน OS X อาจทำได้ แต่ถ้าทำได้ฉันไม่รู้ว่าgdate
ติดตั้งอย่างไร):
[ที่จะใช้date
แทนการgdate
ใช้นามแฝง set_wake_time = 'date "-v + $ {OFFSET} S" "+% D% T"']
นี่คือสคริปต์ที่ฉันใช้:
#!/bin/zsh -f
# how many seconds into the future we want to wake the display
# 15 seems to work reliably. YMMV.
OFFSET=15
# to calculate the time, we need `gdate`
alias set_wake_time='/usr/local/bin/gdate --date "+${OFFSET} sec" "+%m/%d/%g %H:%M:%S"'
# this is where we set the wake command
# if it doesn't succeed the script will exit immediately
/usr/bin/sudo /usr/bin/pmset schedule wake "`set_wake_time`" || exit 1
# if you were not testing this, you'd probably want to end at the
# next line. Just remove the leading '#'
#exit 0
#######################################################
### Everything below this line is only needed during testing ###
# this tells the display to sleep
# because we can test waking the screen up unless it's asleep
pmset displaysleepnow
# for testing purposes: now the script will pause for $OFFSET seconds
sleep $OFFSET
# For testing purposes:
# after $OFFSET seconds, this sound will play 3 times.
# by that time, the display should be awake
# I did this to help me know when I had set OFFSET too low
afplay /System/Library/Sounds/Glass.aiff
afplay /System/Library/Sounds/Glass.aiff
afplay /System/Library/Sounds/Glass.aiff
# script is done
exit 0
ทุกอย่างหลังจากที่ ######### 'สามารถลบได้เมื่อคุณเสร็จสิ้นการทดสอบแล้ว