我知道这是一个非常常见的问题,但我觉得我需要一个具体的答案来帮助找出我出错的地方......
每当gem管理cron作业时加载 - 它在开发中运行良好但是当我将应用程序加载到AWS时我似乎无法工作......
当我通过SSH连接到实例时,我可以运行crontab -l,它会列出随时随地的任务,但它似乎并没有真正执行它们。我也找不到任何日志文件来读取为什么它没有被解雇。
这是我从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
答案 0 :(得分:0)
您可以在crontab中尝试更简单的命令,并将其更改为每分钟触发一次。例如。
/ bin / echo“test”>> /home/username/testcron.log
这样你就可以快速排除它是否是罪魁祸首的罪魁祸首。请记住使用每个命令的完整路径。因此,在您的情况下,您可能希望更改“bundle”命令以使用完整路径。您可以使用“which”命令找到路径。
另外,你确定你在这里正确逃离了吗?
-e production'\''Trendi.home'\''
这不会更充足吗?
-e production“Trendi.home”