如何在后台运行每四个小时的太阳黑子重新索引



我想每四个小时执行一次耙子太阳黑子:重新索引RAILS_ENV=生产命令。为了实现这一点,我使用 shell 编程编写了简单的 bash 脚本。我将在终端中成功运行,但是如果我尝试在crontab中运行它,那么它将无法正常工作。我使用的操作系统是 centos。

这是我的 bash 脚本代码

#!/bin/bash
#export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
export PATH=/usr/local/rvm/gems/ruby-1.9.2-p290/bin:/usr/local/rvm/gems/ruby-1.9.2-p290@global/bin:/usr/local/rvm/rubies/ruby-1.9.2-p290/bin:/usr/local/rvm/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:
echo "started"
cd /var/www/html/spotchase2
pwd
source /usr/local/rvm/environments/ruby-1.9.2-p290
bundle install
if [ "$?" = 0 ]; then
    echo `date`
fi
source /usr/local/rvm/environments/ruby-1.9.2-p290
#/usr/local/rvm/gems/ruby-1.9.2-p290/bin/rake sunspot:reindex RAILS_ENV=production
rake sunspot:reindex RAILS_ENV=production
if [ "$?" = 0 ]; then
    echo "complete"
fi

请帮我解决这个问题。

编辑

我正在重定向输出一个文本文件。在该文本文件中,我只是开始,捆绑安装和日期。我没有得到完整的消息,因此我知道它不起作用,并且该文本文件没有收到任何错误。

请帮我解决这个问题。

通常,我使用 whenever gem 来处理这样的事情。我不必写一个 bash 脚本,一个耙子脚本就足够了。 Whenever将为 crontab 生成正确的语法。

在我的项目中,我有几个脚本需要始终在后台运行。这是生成 contab 文件的命令。

whenever --update-crontab --set environment=production --load-file config/schedule_client.rb --user ubuntu

它会生成这样的东西。

0 2 * * * /bin/bash -l -c 'source /home/ubuntu/.rvm/scripts/rvm && cd /var/www/yoolk_statistics_api && RAILS_ENV=production bundle exec rake statistics:generate_clienst --silent >> log/client.log 2>&1'

为了确保我的 crontab 始终有效,我将输出重定向到日志文件,以便我可以看到它是否正在运行。在我的 ubuntu 服务器中,我通常会检查syslog file以进行调试。

最新更新