2014-03-12 48 views
0

我寫了下面的Ruby守護進程執行代碼:紅寶石守護進程不會在系統啓動時

require 'rubygems' 
require 'daemons' 

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

Daemons.run_proc(
    'background_service', # name of daemon 
# :dir_mode => :normal 
# :dir => File.join(pwd, 'tmp/pids'), # directory where pid file will be stored 
# :backtrace => true, 
# :monitor => true, 
    :log_output => true 
) do 
    exec "ruby #{file}" 
end 

它應該是從執行在系統啓動一個shell腳本執行。

#!/bin/bash 
2 HOME=/opt/halogen/ui 
3 
4 ruby $HOME/daemon.rb start > log 

當我手動執行這個shellscript像./test.sh它工作正常。 ruby守護進程執行。但是,按照我的要求,它應該在系統啓動時調用。當系統調用test.sh文件時,它不起作用,並且ruby守護進程也不會執行。

請幫我解決這個問題。

+0

你怎麼知道shell腳本實際上是在啓動時執行的? –

+0

@JustinWood:因爲該腳本還包含其他操作,並且在根用戶下以系統引導 – Jaydipsinh

回答

0

我的猜測是你的shell腳本在root用戶下運行,該用戶沒有安裝ruby

嘗試使用su稱之爲:

su halogen -c ruby $HOME/deamon.rb start > log 

爲了進一步探討您的問題 - 你應該看看是否有你的腳本的任何錯誤。

在腳本中替換第一行:

#!/bin/bash -ex 
exec > >(tee /var/log/shellscript.log) 2>&1 

這將使bash腳本冗長,詳細輸出寫入/var/log/shellscript.log。這應該使您能夠查看是否有任何錯誤,以及它們是什麼。

+0

正確運行時,ruby已經安裝。我已經檢查了哪個命令 – Jaydipsinh

+0

和'log'說了些什麼? –

+0

日誌不包含任何內容。它的空 – Jaydipsinh