我有几个rake任务需要在后台运行。我使用rbenv来管理我的ruby版本,使用supervisord来运行任务,使用bundle来确保我使用正确的gem版本。我的每个任务的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监控我的基础设施,并使用领事检查来确保这些脚本正在运行。check调用一个非常简单的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。这就是为什么我认为这是一个捆绑包的问题,因为我们在ruby升级后安装了一个较新的版本。
我们直到周日才发现这个问题,但可能是我们之前没有看到这个问题。
有人能帮我吗?我已经被困了一段时间了:
https://stackoverflow.com/questions/38335155
复制相似问题