通过crontab触发的bash脚本运行rake文件

时间:2011-10-22 09:22:34

标签: ruby-on-rails ruby bash cron

我正在尝试从crontab触发的bash脚本中运行RAKE文件:

我的crontab看起来像这样:

* * * * * /bin/bash ~/sites/www/tweeet/get_tweeet.sh

我的bash脚本(get_tweeet.sh)如下所示:

  1 #!/bin/bash
  2 set -x
  3 cd /var/www/tweeet/
  4 export RAILS_ENV=development
  5 rake get_tweeet >> /var/www/tweeet/test.log
  6 echo "$(date): cron job run    " >> /var/www/tweeet/test.log

第6行输出到test.log但第5行现在执行 - rake没有运行。

但是如果我使用crontab

中的确切行来调用脚本
/bin/bash /var/www/tweeet/get_tweeet.sh

然后它有效 - 我对此感到困惑!

1 个答案:

答案 0 :(得分:1)

您可以直接执行脚本,因为它可以提供完整的环境。即使cronjob属于同一个用户,它也不会。因此,一种解决方案是从完整的登录shell中启动它。在您的crontab中:

bash --login -c '/var/www/tweeet/get_tweeet.sh'

我记得看到一些关于这个可能有一些微妙的副作用的帖子,我不记得了,但它一直在为我工作。