Вам не нужно писать скрипт-обертку или пробовать какую-либо черную магию, просто используйте библиотеку Daemons и все готово.
Представьте, что у вас есть класс Worker, у которого есть метод "run", который входит в бесконечный цикл чтения из сокета или чего-то подобного, вот как вы должны написать свою оболочку Daemons:
# this is file my_worker_control.rb
require 'rubygems'
require 'daemons'
require 'worker'
Daemons.run_proc(:app_name => 'my_worker', :dir_mode => :system, :log_output => true ) do
Worker.run
end
Как только скрипт будет выполнен, просто вызовите его из командной строки или скрипта init.d:
my_worker_control.rb run | start | stop | restart
Этот конфиг сгенерирует файл "my_worker.pid" в "/ var / run", и вы можете использовать monit для наблюдения за процессом с помощью этого файла.