[英]cron jobs not working aws whenever gem rails
我知道这是一个非常普遍的问题,但是我觉得我需要一个特定的答案来帮助找出我要去哪里。
每当gem来管理cron作业时都加载-在开发中工作正常,但是当我将应用加载到AWS时,它似乎无法正常工作...
当我通过SSH进入实例时,我可以运行crontab -l,它列出了whenever任务,但实际上似乎没有执行它们。 我也找不到任何日志文件来读取为什么它不触发。
这是我从eb活动日志中提取的。
+++ GEM_ROOT=/opt/rubies/ruby-2.3.6/lib/ruby/gems/2.3.0
++ (( 0 != 0 ))
+ cd /var/app/current
+ su -c 'bundle exec whenever --update-cron'
[write] crontab file updated
+ su -c 'crontab -l'
# Begin Whenever generated tasks for:
/var/app/current/config/schedule.rb at: 2018-01-10 06:08:24 +0000
0 * * * * /bin/bash -l -c 'cd /var/app/current && bundle exec
bin/rails runner -e production '\''Trendi.home'\'' >>
app/views/pages/cron.html.erb 2>&1'
# End Whenever generated tasks for:
/var/app/current/config/schedule.rb at: 2018-01-10 06:08:24 +0000
[2018-01-10T06:08:24.705Z] INFO [15603] - [Application update app-
a3a0-180109_230627@16/AppDeployStage1/AppDeployPostHook] : Completed
activity. Result:
Successfully execute hooks in directory
/opt/elasticbeanstalk/hooks/appdeploy/post.
这是我来自ebextensions文件夹的配置文件
files:
"/opt/elasticbeanstalk/hooks/appdeploy/post/01_cron.sh":
mode: "000755"
owner: root
group: root
content: |
#!/usr/bin/env bash
# Using similar syntax as the appdeploy pre hooks that is
managed by AWS
set -xe
EB_SCRIPT_DIR=$(/opt/elasticbeanstalk/bin/get-config container
-k script_dir)
EB_SUPPORT_DIR=$(/opt/elasticbeanstalk/bin/get-config container
-k support_dir)
EB_DEPLOY_DIR=$(/opt/elasticbeanstalk/bin/get-config container
-k app_deploy_dir)
. $EB_SUPPORT_DIR/envvars
. $EB_SCRIPT_DIR/use-app-ruby.sh
cd $EB_DEPLOY_DIR
su -c "bundle exec whenever --update-cron"
su -c "crontab -l"
我的Schedule.rb
ENV['RAILS_ENV'] = "production"
set :output, "app/views/pages/cron.html.erb"
every 1.hour, at: ":00"do # 1.minute 1.day 1.week 1.month 1.year
is also supported
runner "Trendi.home", :environment => 'production'
end
我的任务存储在/ lib /
module Trendi
def self.home
#exectuted task code here
end
您可以在crontab中尝试一个更简单的命令,并将其更改为每分钟触发一次。 例如
/ bin / echo“测试” >> / home /用户名/testcron.log
这样,您就可以迅速排除罪魁祸首是否是cronjob。 请记住使用每个命令的完整路径。 因此,在您的情况下,您可能需要更改“捆绑”命令以使用完整路径。 您可以使用“哪个”命令找到路径。
另外,您确定您正确地在这里逃跑了吗?
-e生产'\\'Trendi.home'\\''
这还不够吗?
-e生产“ Trendi.home”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.