Guarda 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 con launchctl load ~/Library/LaunchAgents/test.plist
o al cerrar sesión y volver a iniciarla. La aplicación de los cambios requiere la descarga y la carga.
La expansión de tilde ( ~/
) funciona en WatchPaths de forma predeterminada. EnableGlobbing agrega expansión de comodines y tilde para ProgramArguments, pero no afecta a Program o WatchPaths.
Si un archivo visto se modifica dentro de los diez segundos posteriores a 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 como sleep 10
al final de los scripts. Establecer ThrottleInterval en 10 no ayuda.
No se detectan cambios en las subcarpetas de las carpetas vigiladas.
Consulte man launchd
y man launchd.plist
para obtener más información.