Guarde 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 se puede cargar launchctl load ~/Library/LaunchAgents/test.plist
o cerrar sesión y volver a iniciarla. La aplicación de cambios requiere descargar y cargar la lista.
Tilde expansion ( ~/
) funciona en WatchPaths por defecto. EnableGlobbing agrega comodines y expansión de tilde para ProgramArguments, pero no afecta a Program o WatchPaths.
Si un archivo observado se modifica dentro de los diez segundos desde la última invocación, se agrega un mensaje como este a system.log:
com.apple.launchd.peruser.501[146]: (test) Throttling respawn: Will start in 7 seconds
Una forma de deshacerse de los mensajes es agregar algo parecido sleep 10
al final de los scripts. Establecer ThrottleInterval en 10 no ayuda.
No se detectan cambios en las subcarpetas de las carpetas observadas.
Ver man launchd
y man launchd.plist
para más información.