Meu comando de relatório de tarefas do cron não encontrado [duplicado]

8

Este é o conteúdo do meu arquivo crontab:

0 0,6,12,18 * * * cd /var/www/app/current && backup perform --trigger db_backup --config_file config/backup.rb --data-path db --log-path log --tmp-path tmp >> /var/www/app/current/log/cron.log 2>&1

0 3 * * * cd /var/www/app/current && RAILS_ENV=production bundle exec rake runs:populate --silent >> /var/www/app/current/log/cron.log 2>&1

59 23 * * * cd /var/www/app/current && RAILS_ENV=production bundle exec rake runs:log --silent >> /var/www/app/current/log/cron.log 2>&1

Se eu executar qualquer um desses manualmente como o proprietário do crontab eles funcionam bem, mas o arquivo cron.log simplesmente contém:

/bin/sh: bundle: not found
/bin/sh: backup: not found
/bin/sh: bundle: not found

Eu tentei envolver cada um dos seguintes (como padrão pelo sempre gem que estou usando para gerenciar meu arquivo cron ) bash -l -c '...' mas depois recebo o mesmo que acima, exceto para bash bash: bundle: command not found

    
por DEfusion 05.10.2011 / 11:37

2 respostas

13

O PATH de Deafult para trabalhos CRON é geralmente /usr/bin:/bin . Seus comandos bundle e backup provavelmente não estão no caminho padrão. Uma solução é alterar seu crontab e incluir o caminho completo para esses comandos.

0 0,6,12,18 * * * cd /var/www/app/current && /path/to/backup ...

Em geral, é uma boa ideia usar caminhos completos em crontabs. Se você quiser, você também pode especificar o PTH dentro do crontab

PATH=/bin:/usr/bin:/path/to/your/program

0 0,6,12,18 * * * cd /var/www/app/current && backup ...
    
por 05.10.2011 / 11:41
3

Sim, você pode definir o caminho antes dos registros reais do crontab, por exemplo:

PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:
0 3 * * * run-cron-job
    
por 05.10.2011 / 12:13