誰かがこれを簡単またはあなたは私が間違っているのを教えてくださいすることができますを行う方法を私を見ることができますか?それが実行されますが、それを停止して起動しようとして続けると、その実行を知っていないように見えるように
現在bluepillは、デーモンを開始しています。ここで
は、ここに私の.pillファイルから自分のコード
app.process("get_dropboxes") do |process|
process.working_dir = RAILS_ROOT
process.pid_file = File.join(RAILS_ROOT, "tmp", "pids", "get_dropbox.pid")
process.start_command = "/usr/bin/env RAILS_ENV=#{RAILS_ENV} bundle exec lib/daemons/get_dropbox_ctl start"
process.stop_command = "/usr/bin/env RAILS_ENV=#{RAILS_ENV} bundle exec lib/daemons/get_dropbox_ctl stop"
process.start_grace_time = 10.seconds
process.stop_grace_time = 10.seconds
process.restart_grace_time = 10.seconds
process.checks :cpu_usage, :every => 30.seconds, :below => 20, :times => [3,5]
process.checks :mem_usage, :every => 30.seconds, :below => 350.megabytes, :times => [3,5]
end
である私のget_dropbox_ctlファイル
#!/usr/bin/env ruby
require 'rubygems'
require "daemons"
require 'yaml'
require 'erb'
gem 'activesupport', '>=3.0.0'
require 'active_support'
# For some reason, ActiveSupport 3.0.0 doesn't load.
# Load needed extension directly for now.
require "active_support/core_ext/object"
require "active_support/core_ext/hash"
options = YAML.load(
ERB.new(
IO.read(
File.dirname(__FILE__) + "/../../config/daemons.yml"
)).result).with_indifferent_access
options[:dir_mode] = options[:dir_mode].to_sym
Daemons.run File.dirname(__FILE__) + "/get_dropbox.rb", options
そして、ここで私が手に私のget_dropbox.rbファイルです
#!/usr/bin/env ruby
# You might want to change this
ENV["RAILS_ENV"] ||= "production"
require 'net/pop'
require File.dirname(__FILE__) + "/../../config/application"
Rails.application.require_environment!
$running = true
Signal.trap("TERM") do
$running = false
end
while($running) do
# do stuff .......
sleep 60
end
ログです
[2011-07-13T16:55:00.464202 #32257] WARN -- : [domain.com:get_dropboxes] pid_file /var/www/domain.com/current/tmp/pids/get_dropbox.pid does not exist or cannot be read
W, [2011-07-13T16:55:00.464315 #32257] WARN -- : [domain.com:get_dropboxes] pid_file /var/www/domain.com/current/tmp/pids/get_dropbox.pid does not exist or cannot be read
W, [2011-07-13T16:55:00.464505 #32257] WARN -- : [domain.com:get_dropboxes] Executing start command: /usr/bin/env RAILS_ENV=production bundle exec lib/daemons/get_dropbox_ctl start
I, [2011-07-13T16:55:01.602210 #32257] INFO -- : [domain.com:get_dropboxes] Going from down => starting
確かにこれより簡単な方法がありますか?
あなたはcronジョブでこれをしない理由はありますか? – moritz
私はそれを監視し、それがダウンし、私は他のものを監視するためにbluepillを使用しているので、それが最良の選択肢だと思ったら自動再起動する必要が???または私は間違っていますか? – rick
これは、次のように考えています。60秒ごとにジョブを実行したい場合は、実際のジョブが長い時間(たとえば5秒)かかると「ドリフト」しないので、cronは良いオプションです。 60秒の睡眠は、実際のデーモン化されたプロセスよりもこれがあなたのシナリオに近いことを示唆していますか? – moritz