3 votos

No se puede ejecutar la tarea launchd

Ya lo hice una vez y estoy intentando hacerlo en un ordenador nuevo y no veo qué estoy haciendo mal.

Tengo un ruby script en mi carpeta de usuario llamado forecast.rb. Lo he puesto como ejecutable (a+x). Escribe una línea en otro archivo llamado .weather.txt.

Quiero ejecutar forecast.rb cada 5 minutos.

Tengo un archivo plist llamado com.jwhite.forecast_tmux.plist. Ese archivo se parece a:

<?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>com.jwhite.forecast_tmux</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/jwhite/forecast.rb</string>
    </array>
    <key>StartInterval</key>
    <integer>300</integer>
</dict>
</plist>

Este archivo se encuentra en ~/Library/LaunchAgents. Y después de moverlo allí ejecuté Launchctl load -w ~/Library/Launchagents/com.jwhite.forecast_tmux.plist.

Si ejecuto forecast.rb (./forecast.rb) se ejecuta bien. Pero mi launchd no se ejecuta.

¿Qué me falta?

EDITAR:

He empezado a usar LaunchControl y me sale el error.

/Users/jwhite/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- geocoder (LoadError)
from /Users/jwhite/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from /Users/jwhite/forecast.rb:3:in `<main>'

Pero cuando ejecuto esto desde la terminal todo se ejecuta bien. ¿Entonces launchctl no puede leer en Ruby Gems?

0 votos

¿Cuál es la primera línea del rb script?

0 votos

La etiqueta debe coincidir con el nombre del archivo sin el .plist.

0 votos

@fd0 En realidad sí. Ha sido un mal copy/paste de cuando hice esto anteriormente. He editado la descripción para mostrar lo que realmente estoy haciendo.

1voto

Jay Puntos 101

Tuve el mismo problema, tratando de ejecutar un script en un intervalo usando LaunchControl (gran aplicación, compruébalo). Voy a copiar y pegar directamente desde la fuente que me ayudó:

Para los programas de la interfaz gráfica de usuario se ignora el entorno de shell por defecto scripts, y por lo tanto las versiones de ruby gestionadas por RVM.

La solución es definirlos a través de launchctl. Esos valores no están sin embargo, después de un reinicio, así que los puse en .bash_profile ya que abro un shell de todos modos todo el tiempo, ver más abajo.

launchctl setenv GEM_HOME ~/.rvm/gems/ruby-2.2.1 launchctl setenv GEM_PATH ~/.rvm/gems/ruby-2.2.1:/Users/markus/.rvm/gems/ruby-2.2.1@global

Todas las soluciones más permanentes (por ejemplo, launchd.conf) ya no funcionan en 10.10. Espero que esto ayude a cualquiera que se encuentre con un problema similar.

En mi caso sólo configuré el GEM_HOME y el PATH correctos en LaunchControl.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X