J'ai développé le simple Daemon de lancement suivant pour fournir un déclencheur de 'réveil' pour les scripts sur 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>
Vous pouvez remplacer "say w" par votre code. J'écris une date à z mais vous pourriez changer cela pour écrire n'importe quoi. Vous devrez peut-être augmenter 'ExitTimeOut' pour certains scripts. Mon Daemon de lancement se trouve dans /Library/LaunchDaemons/wake-alert.plist.
Le démon de lancement observe le fichier DirectoryService.server.log et l'écrit dans un fichier temporaire à condition que le fichier soit vide. Le fichier est effacé par une entrée 'Sleep' du journal et par un arrêt.
Si vous utilisez 'fast user switching' pour dormir, vous constaterez que les scripts qui nécessitent un utilisateur connecté tenteront de s'exécuter trop tôt et échoueront à moins que vous ne modifiiez le Daemon de lancement - peut-être grep 'Succeeded' dans 'secure.log'.