Guardar una lista de propiedades como esta como ~/Library/LaunchAgents/test.plist
:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
http://www.apple.com/DTDs/PropertyList-1.0.dtd>
<plist version="1.0">
<dict>
<key>Label</key>
<string>test</string>
<key>ProgramArguments</key>
<array>
<string>say</string>
<string>yy</string>
</array>
<key>WatchPaths</key>
<array>
<string>~/Desktop/</string>
</array>
</dict>
</plist>
El agente puede ser cargado con launchctl load ~/Library/LaunchAgents/test.plist
o cerrando la sesión y volviendo a entrar. Aplicar los cambios requiere descargar y cargar el plist.
La expansión de Tilde ( ~/
) funciona en WatchPaths de forma predeterminada. EnableGlobbing añade expansión de comodín y tilde para ProgramArguments, pero no afecta ni a Program ni a WatchPaths.
Si un archivo vigilado se modifica dentro de los diez segundos de la última invocación, un mensaje como este se añade al system.log:
com.apple.launchd.peruser.501[146]: (test) Throttling respawn: Will start in 7 seconds
Una forma de deshacerse de los mensajes es añadir algo como sleep 10
hasta el final de scripts. Poner el Intervalo del acelerador a 10 no ayuda.
Los cambios en las subcarpetas de las carpetas vigiladas no se detectan.
Ver man launchd
y man launchd.plist
para más información.