1

Railsアプリにcronジョブを実装しようとしていますが、cronはまったく初めてです。Rails 3のgemはいつでも使用しています。

これらは私が行った手順です:

Gemfile 内

gem 'whenever', :require => false   

それから走った、

wheneverize .

そして、これは私の config/schedule.rb がどのように見えるかです:

set :environment, :development

set :path, "/home/pc/Workspace/pep1"


every 1.minutes do
runner "Demo.update_time_slot"
command "rm -rf /tmp/cache"
end

私のデモモデルには以下が含まれています:

class << self
def update_time_slot
    .......
end
end

ターミナルでコマンドを実行し、

whenever --update-crontab pep1
whenever -i

しかし、cronファイルが実行されていないようです。しかし、Rails コンソールで Demo.update_time_slot を実行すると、問題なく動作します。

crontab -l の出力は次のとおりです。

            # Begin Whenever generated tasks for: pep1
    * * * * * /bin/bash -l -c 'cd /home/pc/Workspace/pep1 && script/rails runner -e development '\''Demo.update_time_slot'\'''

    * * * * * /bin/bash -l -c 'rm -rf /tmp/cache'

    # End Whenever generated tasks for: pep1

    # Begin Whenever generated tasks for: /home/pc/Workspace/pep1/config/schedule.rb
    * * * * * /bin/bash -l -c 'cd /home/pc/Workspace/pep1 && script/rails runner -e development '\''Demo.update_time_slot'\'''

    * * * * * /bin/bash -l -c 'rm -rf /tmp/cache'

    # End Whenever generated tasks for: /home/pc/Workspace/pep1/config/schedule.rb

「grep CRON /var/log/syslog」の出力は次のとおりです。

Oct 12 22:37:01 IdeaPad-S400 CRON[10845]: (pc) CMD (/bin/bash -l -c 'rm -rf /tmp/cache')
Oct 12 22:37:01 IdeaPad-S400 CRON[10846]: (pc) CMD (/bin/bash -l -c 'cd /home/mona/Workspace/pep1 && script/rails runner -e development '\''Demo.update_time_slot'\''')
Oct 12 22:37:01 IdeaPad-S400 CRON[10847]: (pc) CMD (/bin/bash -l -c 'cd /home/mona/Workspace/pep1 && script/rails runner -e development '\''Demo.update_time_slot'\''')
Oct 12 22:37:01 IdeaPad-S400 CRON[10852]: (pc) CMD (/bin/bash -l -c 'rm -rf /tmp/cache')

私は物事がうまくいかないところを理解していません。誰でもこれで私を助けることができますか?

本当に感謝します。

ありがとう。

4

1 に答える 1

0

解決しました。このパスを schedule.rb の先頭に追加しました。

env :PATH, '/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games'

現在、cronは完全に機能しています。

于 2013-10-19T15:29:18.100 に答える