1

我的另一个 Q 已关闭,因为他们说这是这个问题的重复。

不幸的是,那个答案没有用。

基本上我试图让每当自动运行我的 refresh_sitemaps 。

在我的 cron.log 文件中有趣的是它看起来像这样(注意奇怪的字符):

/usr/bin/ruby: No such file or directory -- °¯Ø (LoadError)
/usr/bin/ruby: No such file or directory -- ؽô (LoadError)
/usr/bin/ruby: No such file or directory -- à=Ù (LoadError)

这是我的schedule.rb中的内容:

env :PATH, '/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin'
set :output, "#{path}/log/cron.log"

every 1.day, :at => '3:00 pm' do
  rake "-s sitemap:refresh"
end

当我运行cap refresh_sitemaps它时它运行良好,当它尝试作为 Cron 作业自行运行时它只是不起作用。

我很肯定从上面的 PATH 到 ruby​​ 的路径是正确的。如果我 SSH 进入并运行以下命令,就会出现以下结果:

user@example.com [~]# /usr/local/bin/ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]

奇怪的是它似乎甚至没有看到我的“路径”,因为它仍在 /usr/bin/ruby 中查找。

另一个奇怪的事情是那里实际上有一些东西......根据这个 ssh 命令:

user@example.com [~]# /usr/bin/ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]

更新

当我运行crontab -l这就是我得到的。请注意我添加的额外路径,它来自我为这个问题找到的 mediatemple 帮助指南(尽管它没有给出任何其他描述):

# Begin Whenever generated tasks for: APPNAME
PATH=/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin
GEM_HOME=/usr/local/lib/ruby/gems/1.9.1
GEM_PATH=/usr/local/lib/ruby/gems/1.9.1
RUBYLIB=/usr/local/lib/ruby/site_ruby/1.9.1

10 17 * * * /bin/bash -l -c 'cd /home/USER/u/apps/APPNAME/releases/20120731204722 && RAILS_ENV=production bundle exec rake -s sitemap:refresh --silent >> /home/USER/u/apps/APPNAME/releases/20120731204722/log/cron.log 2>&1'

# End Whenever generated tasks for: APPNAME

我在 SSH 后尝试自行运行它,它运行良好:

/bin/bash -l -c 'cd /home/USER/u/apps/APPNAME/releases/20120731204722 && RAILS_ENV=production bundle exec rake -s sitemap:refresh --silent

4

1 回答 1

0

我的标题中有一个杂散的 UTF-8 字符(当时在站点地图中)。多么令人沮丧;0

于 2012-08-01T17:16:39.527 回答