我有cron运行在EC2实例的rails应用程序,但它失败,错误 –
/bin/bash: bundle: command not found
如果我运行与ubuntu用户或sudo用户的捆绑命令工作。 我已经使用crontab -e命令添加了cron。
一些故障排除我做了(与sudo显示相同的结果) –
> which ruby /usr/local/bin/ruby > which bundle /usr/local/bin/bundle
但是,如果将这些命令添加到crontab中的哪个ruby和哪个包中,并通过日志输出它,则会显示 –
克朗有 –
* * * * * /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正在从系统中取出错误的ruby,我该怎么做才能纠正这个问题? 我想从我的/ usr / local / bin / ruby中获取ruby,然后它可以findbundle。
谢谢 !!
你可以指定完整的path,作为注释。
你也应该能够在你的crontab的顶部设置PATH:
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'
其实,我看到你已经安装在/ usr / bin和/ usr / local / bin中的ruby。 在这种情况下,如果你想要一个特定的ruby,完全指定path。 用上面写的cron,由于PATH顺序,你将执行/ usr / bin / ruby而不是/ usr / local / bin / ruby。