我在crontab中的命令下面,当我在终端中运行此命令时工作正常,但是当我在crontab中运行此命令时出现以下错误
* * * * * cd /home/path/application && RAILS_ENV=development ./bundle exec rake namespacefolder:rake_file
错误:
bundler: command not found: rake
Install missing gem executables with `bundle install`
有人请帮忙。
答案 0 :(得分:2)
Cron只将最小的一组环境变量传递给您的工作。见here!
为cron执行添加-lc选项以使用您的登录环境并在crontab顶部设置环境路径。
PATH=$PATH:/usr/bin:/bin:/usr/local/bin
* * * * * /bin/bash -lc "cd ~/home/path/application && RAILS_ENV=development bundle exec rake namespacefolder:rake_file"
答案 1 :(得分:0)
如果没有用捆绑
解决,请试试这个* * * * * /bin/bash -l -c "cd ~/home/path/application && RAILS_ENV=development bundle exec rake namespacefolder:rake_file"
<强> /斌/庆典强>
指定用于执行命令的程序
<强> -c 强>
在处理选项后从第一个非选项参数读取并执行命令,然后退出。任何剩余的参数都分配给位置参数,从$ 0开始。
<强> -l </强>
使此shell的行为就像登录直接调用一样。当shell是交互式的时,这相当于使用'exec -l bash'启动登录shell。当shell不是交互式时,将执行登录shell启动文件。 'exec bash -l'或'exec bash --login'将用Bash登录shell替换当前shell。有关登录shell的特殊行为的说明,请参阅Bash启动文件。
请参阅此文档here