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」を増やす必要がある場合があります。起動デーモンは/Library/LaunchDaemons/wake-alert.plistにあります
起動デーモンはDirectoryService.server.logを監視し、ファイルが空の場合に一時ファイルに書き込みます。ファイルは、ログの「スリープ」エントリとシャットダウンによってクリアされます。
「ユーザーの高速切り替え」を使用してスリープ状態にすると、ログインユーザーを必要とするスクリプトは、Launch Daemonを変更しない限り、実行が早すぎて失敗することがわかります。