2010-03-14 33 views
8

Vâng, tiêu đề sẽ nói lên tất cả. Tôi có một kịch bản ruby ​​tôi muốn chạy như một dịch vụ (một trong những tôi có thể bắt đầu và dừng lại) trên hộp Linux của tôi. Tôi đã có thể tìm cách để thực hiện điều đó trên Windows hereTập lệnh Ruby làm dịch vụ

Một số điểm đọc chỉ ra việc tạo các daemon hoặc tác vụ cron.

Tôi chỉ cần một thứ đơn giản mà tôi có thể gọi khi khởi động lại hộp của mình và có thể dừng/bắt đầu bất cứ khi nào tôi muốn. kịch bản của tôi có một cuộc gọi giấc ngủ nội bộ, và chạy trong "vòng đời"

cảm ơn trước

Trả lời

14

Tôi thực sự đã tìm thấy cách tốt hơn để làm điều đó bằng cách sử dụng tập lệnh ruby.

Đây là cách tôi đã làm nó:

Trước hết, tôi cài đặt daemon

gem install daemons 

Sau đó, tôi đã làm:

require 'rubygems' 
require 'daemons' 

pwd = File.dirname(File.expand_path(__FILE__)) 
file = pwd + '/runner.rb' 

Daemons.run_proc(
    'my_project', # name of daemon 
    :log_output => true 
) do 
    exec "ruby #{file}" 
end 

sau đó tôi tạo ra một tập tin gọi là runner.rb, trong đó tôi có thể gọi các tập lệnh của mình như:

require "/var/www/rails/my_project/config/environment" 
Post.send('details....') 

Daemons là một viên ngọc tuyệt vời!

+5

Tốt hơn để sử dụng: "gem install daemons" số ít khác biệt. Bạn có thể muốn http://rubygems.org/gems/daemons – genkilabs

3

RAA - deamons là một công cụ hữu ích cho việc tạo verfy daemon unix từ kịch bản ruby.

+0

Đó dường như khá phức tạp. Bạn có thể đăng một ví dụ về cách sử dụng không? Hay bất cứ điều gì đơn giản hơn? –

+0

Daemon không đơn giản. Có rất nhiều giả định về khả năng mà hệ điều hành mong đợi từ một daemon ... tạo và xác định những khả năng đó là một phần quan trọng của sự phức tạp của Daemon. –

0

Từ 1.9.x ruby ​​đã tích hợp sẵn chức năng:

Process.daemon

Các vấn đề liên quan