我之前使用以下Monit脚本进行Monit监视resque
check process resque_worker_production_QUEUE
with pidfile /var/tmp/resque_production.pid
start program = "/usr/bin/env HOME=/home/eg RACK_ENV=production PATH=/usr/local/bin:/usr/local/ruby/bin:/usr/bin:/bin:$PATH /bin/sh -l -c 'cd /apps/eg/production/current; nohup bundle exec rake environment resque:work RAILS_ENV=production QUEUE=mailer VERBOSE=1 PIDFILE=/var/tmp/resque_production.pid & >> log/resque_worker_production_QUEUE.log 2>&1'" as uid eg and gid eg
stop program = "/bin/sh -c 'cd /apps/eg/production/current && kill -9 $(cat
然后我更改了一些内容,最明显的是删除了系统范围的rvm安装,我假设在/ usr / local / ruby / bin安装了ruby。大约在这个时候,monit再也无法启动resque。也许原因是别的,但我认为这些卸载导致了破损。
所以我查看了脚本并注意到/ usr / local / ruby / bin不存在,所以我尝试将其更改为我认为应该指向的内容,因为我的rvm中的红宝石是唯一的一个/home/eg/.rvm/rubies/ruby-1.9.3-p194/bin
但那没用。所以我更多地谷歌,并发现这个也没有用的建议:
check process resque_worker_production_QUEUE
with pidfile /var/tmp/resque_production.pid
start program = "/bin/bash -l -c 'cd /apps/eg/production/current; nohup bundle exec rake environment resque:work RAILS_ENV=production QUEUE=mailer VERBOSE=1 PIDFILE=/var/tmp/resque_production.pid & >> log/resque_worker_production_QUEUE.log 2>&1'" as uid eg and gid eg
我在日志中的所有内容是:
[UTC Oct 5 03:06:38] error : 'resque_worker_production_QUEUE' process is not running
[UTC Oct 5 03:06:38] info : 'resque_worker_production_QUEUE' trying to restart
[UTC Oct 5 03:06:38] info : 'resque_worker_production_QUEUE' start: /bin/bash
[UTC Oct 5 03:07:08] error : 'resque_worker_production_QUEUE' failed to start
所以我不确定如何进一步调试。有什么建议吗?
答案 0 :(得分:0)
可以肯定的是,你在bash文件中有RVM加载脚本吗? 类似的东西:
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
对我来说,它适用于:
check process <%= pid_name %>
with pidfile <%= pid %>
start program = "/bin/bash -c -l -i 'cd <%= current_path %> && NEWRELIC_ENABLE=false HOME=/home/<%= resque_user %> RAILS_ENV=<%= rails_env %> QUEUE=<%= queue %> PIDFILE=<%= pid %> BACKGROUND=yes VERBOSE=1 <%= fetch(:bundle_cmd, "bundle") %> exec rake resque:work >> <%= shared_path %>/log/resque.log 2>&1'" as uid <%= resque_user %> and gid <%= resque_group %> with timeout 180 seconds
我看到 -i flag 的区别,不确定是否需要,顺序 env变量
您检查了resque日志吗? (我看到log / resque_worker_production_QUEUE.log)
要尝试的另一件事是在ssh'ing到服务器后以 root (或其他monit用户)运行此命令, sudo su 因为你已经加载了rvm,所以还不够,所以最好从头开始尝试。它可以揭示一些错误。
另请参阅此页http://rvm.io/integration/cron了解提示