У меня cron работает для приложения rails на экземпляре EC2, но он не работает с ошибкой -
/bin/bash: bundle: command not found
если я запускаю команду bundle с пользователем ubuntu или пользователем sudo, который работает. Я добавил cron с помощью команды crontab -e.
Некоторое устранение неполадок, которое я сделал (показывает тот же результат с sudo) -
> which ruby
/usr/local/bin/ruby
> which bundle
/usr/local/bin/bundle
Но если добавить эту команду в качестве ruby и which bundle в crontab и вывести ее в журналах, она покажет -
Крон имеет -
* * * * * /bin/bash -l -c 'which ruby >> /home/ubuntu/logs/cron.log 2>&1'
* * * * * /bin/bash -l -c 'which bundle >> /home/ubuntu/logs/cron.log 2>&1'
Вывод -
/usr/bin/ruby
/bin/bash: bundle: command not found
так что в основном мой cron берет неправильный рубин из системы, что мне делать, чтобы исправить это? Я хочу взять рубин из моего / usr / local / bin / ruby, и тогда он также может найти пакет.
Спасибо !!
Вы можете указать полный путь, как показано ниже.
Вы также должны иметь возможность установить PATH в верхней части вашего crontab:
PATH=$PATH:/usr/bin:/bin:/usr/local/bin
* * * * * ruby /home/ubuntu/scripts/ruby.rb >> /home/ubuntu/logs/cron.log 2>&1'
* * * * * bundle exec unicorn >> /home/ubuntu/logs/cron.log 2>&1'
На самом деле, я вижу, что у вас установлен Ruby в / usr / bin и / usr / local / bin. В этом случае, если вам нужен конкретный рубин, полностью укажите путь. С помощью cron, как написано выше, из-за порядка PATH вы будете выполнять / usr / bin / ruby, а не / usr / local / bin / ruby.