Estoy tratando de ejecutar un script de nodo cada hora en mi Mac (OSX 10.8.2 Mountain Lion). Según los resultados de búsqueda de alto rango, la mejor manera de hacerlo es agregar un launchd
agente de lanzamiento.
Por alguna razón, no parece funcionar.
Escribí el siguiente archivo de agente de lanzamiento y lo guardé como ~/Library/LaunchAgents/agenttest.plist
.
<?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>KeepAlive</key>
<dict>
<key>SuccessfulExit</key>
<false/>
</dict>
<key>Label</key>
<string>protocol</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/node</string>
<string>/Users/snorpey/PATH/TO/file.js</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StartInterval</key>
<integer>3600</integer>
</dict>
</plist>
Comencé el agente de lanzamiento ejecutándome launchctl load ~/Library/LaunchAgents/agenttest.plist
en la terminal.
También hice el archivo de script ejecutable con sudo chmod -x /Users/snorpey/PATH/TO/file.js
y actualicé los permisos del archivo con sudo chmod 777 /Users/snorpey/PATH/TO/file.js
.
Cuando ejecuto /usr/local/bin/node /Users/snorpey/PATH/TO/file.js
en la terminal, el script funciona bien.
Sin embargo, no parece funcionar cuando está dirigido por launchd
. Recibo los siguientes mensajes en /var/log/system.log
:
Jan 15 22:32:46 snorpey com.apple.launchd.peruser.501[595] (agenttest[21625]): Exited with code: 1
Jan 15 22:32:46 snorpey com.apple.launchd.peruser.501[595] (agenttest): Throttling respawn: Will start in 10 seconds
¿Por qué no puede ejecutar el script?
fuente
Estuve tropezando con esto por un tiempo (obteniendo 127 errores). Resulta que necesitas algo como esto en tu lista:
launchd parece ejecutar cosas con una ruta mínima que no incluye / usr / local / bin, y el nodo parece necesitar esto en su RUTA para funcionar correctamente.
fuente