私はいくつかのnginxログファイルをテーリングしてMongoDBに入れるイベントマシンループを持っています。 "log eater"スクリプトはrubyデーモンで実行されています。 http://daemons.rubyforge.org/
私はそれが神よりはるかに信頼できることがわかりました。スクリプトが終了すると、スクリプトも監視され、再起動されます。ランナーが死亡した場合に通知が必要な場合は、それを行うためにmonitを使用することができます。ここで
はデーモンのための私のランナースクリプトです:
#!/usr/bin/env ruby
require 'rubygems'
require 'bundler'
Bundler.require(:default)
Bundler.setup(:default)
options = {
:app_name => "log_eater",
:dir_mode => :system,
:multiple => true,
:backtrace => true,
:monitor => true
}
Daemons.run(File.join(File.dirname(__FILE__), 'log_eater.rb'), options)
これが漏れ、あるいはまったく問題がないと何ヶ月も実行されています。神は漏れや死の問題を抱えていました。 Capistranoは起動スクリプトを再起動することでこれを再起動できます。ここで
は、Gentooでlinux
start() {
ebegin "Starting log-eater"
cd /ruby/STABLE/quickanalytics
`scripts/log_eater_runner.rb start -- /usr/logs/nginx.log`
eend $? "Failed to start log-eater"
}
のための鉱山からの抜粋です - startコマンドを使用すると、スクリプトに渡されたい任意の引数です後。
あなたがサービスを書きたいような音 - これは、ルビーはおそらくMarm0t @ – Marm0t
用に最適化されていないものです:あなたがそのアイデアを得るどこでしょ?チューリング完全言語でサービスを書くことができます。 –
あなたの終わりのないプロセスは何をしていますか?それは最良の解決策であることに大きな違いを生むことができます。 –