ฉันพัฒนา Launch Daemon อย่างง่าย ๆ ต่อไปนี้เพื่อให้ทริกเกอร์ 'wake' สำหรับสคริปต์บน Leopard:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>wake-alert</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>-c</string>
<string>z=/tmp/wake; test -s $z || { date > $z; say w; };
tail -1 /Library/Logs/DirectoryService/DirectoryService.server.log | grep -v Sleep || > $z
</string>
</array>
<key>WatchPaths</key>
<array>
<string>/Library/Logs/DirectoryService/DirectoryService.server.log</string>
</array>
<key>ExitTimeOut</key>
<integer>2</integer>
<key>ThrottleInterval</key>
<integer>1</integer>
</dict>
</plist>
คุณสามารถแทนที่ 'say w' ด้วยรหัสของคุณ ฉันเขียนวันที่เป็น z แต่คุณสามารถเปลี่ยนสิ่งนี้เพื่อเขียนอะไรก็ได้ คุณอาจต้องเพิ่ม 'ExitTimeOut' สำหรับสคริปต์บางตัว Daemon เปิดใช้ของฉันอยู่ที่ /Library/LaunchDaemons/wake-alert.plist
Launch Daemon เฝ้าดู DirectoryService.server.log และเขียนลงในไฟล์ชั่วคราวหากไฟล์นั้นว่างเปล่า ไฟล์จะถูกล้างโดยรายการบันทึก 'สลีป' และโดยปิดระบบ
หากคุณใช้ 'การสลับผู้ใช้อย่างเร็ว' เพื่อเข้าสู่โหมดสลีปคุณจะพบว่าสคริปต์ที่ต้องใช้ผู้ใช้ที่เข้าสู่ระบบจะพยายามเรียกใช้เร็วเกินไปและล้มเหลวเว้นแต่คุณจะแก้ไข Launch Daemon - บางที grep