Tuve un problema similar. Cron parece ejecutar comandos de forma predeterminada sin usar la configuración PATH que esperaría del usuario (al iniciar sesión como ese usuario). De hecho, ni siquiera parecía utilizar ninguna de las configuraciones PATH predeterminadas (ya sea en/etc/profile o en otro lugar).
que fue capaz de encontrar el problema mediante los siguientes comandos (el primero es cómo parece cron para ejecutar comandos):
su -c 'PATH printenv' usuarioX
Con salida :/usr/local/bin:/usr/bin:/bin:/usr/juegos
su -l usuarioX -c 'printenv PATH'
Con salida: /opt/ruby-enterprise-1.8.7-2010.02/bin/:/opt/ruby-enterprise-1.8.7-2010.02/bin/:/usr/local/bin:/usr/bin:/bin:/usr/games
Parece que el primer comando no llena la variable PATH de ninguna forma, excepto por el valor predeterminado del sistema desnudo. En mi caso, lo resolví simplemente agregando la ruta (REE) necesaria a /etc/login.defs, que por defecto se ve así:
/etc/login.defs:103:ENV_PATH PATH =/usr/local/bin:/usr/bin:/bin:/usr/games
Descubrí la razón por la cual: el ruby no está registrado en el shell crontab. E hice lo siguiente:/bin/bash -c "source/usr/local/rvm/src/rvm/scripts/rvm &&/root/a/a_rails/script/rails runner Foo.bar" – c2h2