ruby - 运行 bundle exec 时,如何让 bundler 在 "ps aux"中显示完整的命令?

标签 ruby ubuntu rake bundler supervisord

我有几个需要在后台运行的 rake 任务。我正在使用 rbenv管理我的 ruby​​ 版本,supervisord运行任务,bundle确保我使用正确的 gems 版本。我的每个任务的 supervisord 配置如下所示:

[program:data-importer]
command=/home/ubuntu/.rbenv/bin/rbenv exec bundle exec rake import:data
environment=RAILS_ENV=production,PATH=/home/ubuntu/.rbenv/shims:%(ENV_PATH)s,PRODUCTION=true
directory=/home/ubuntu/app/current
user=ubuntu
stdout_logfile=/var/log/app/%(program_name)s-out.log
stderr_logfile=/var/log/app/%(program_name)s-err.log
autostart=true

我也在使用 consul监控我的基础设施,我正在使用 consul 检查以确保这些脚本正在运行。检查调用一个非常简单的 bash 脚本,如下所示:
#!/bin/bash

if ps -ef | grep [i]mport:data | grep -v running; then
  echo "data importer running"
  exit 0
else
  echo "data importer not running"
  exit 2
fi

这些脚本一直运行良好,直到几天前这些检查开始失败。问题是当我运行 ps -ef ,列出的进程不包含 import:data了。它现在显示了这一点:
ubuntu 30450 ... /home/ubuntu/.rbenv/versions/2.3.1/bin/rake

机器上没有真正改变,只有 Ruby 版本。我们用的是2.2.2,上周五我们升级到了2.3.1。这就是为什么我认为这是一个 bundle 程序问题,因为我们在 ruby​​ 升级后安装了更新的版本。

直到周日我们才发现问题,但可能是我们之前没有发现。

谁能帮我这个?我已经被困了一段时间了:(

最佳答案

要在 ps -ef 中获得所需的输出,您必须在 rake 调用周围加上引号:

bundle exec 'rake import:data'

关于ruby - 运行 bundle exec 时,如何让 bundler 在 "ps aux"中显示完整的命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38335155/

相关文章:

node.js - 更改在 GCE 上运行的 node.js 的日志目标

ruby-on-rails - rake db :migrate doesn't work after ruby 2. 2.2 到 2.2.3 通过 RVM 升级

ruby-on-rails - rake 数据库 :migrate not working for me

ruby - 我如何使用 Ruby 元编程来重构这个公共(public)代码?

ruby - ruby 的扩展语法是如何工作的?

ruby-on-rails - 如何创建这个 Ruby on Rails 表单?

ruby-on-rails - 如何通过 HTTParty 通过 PUT 请求发送空数组?

mongodb - ubuntu 11.10 64 位与 32 位

linux - 在 bash 脚本中连接两条指令

ruby-on-rails - 根据投票数对列表进行排序