Ruby on rails Ruby守护进程在系统启动时不执行

Ruby on rails Ruby守护进程在系统启动时不执行,ruby-on-rails,ruby,linux,shell,Ruby On Rails,Ruby,Linux,Shell,我已经编写了以下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 =>

我已经编写了以下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
当我像
/test.sh
那样手动执行这个shell脚本时,它工作得很好。已执行ruby守护进程。但是,根据我的要求,应该在系统启动时调用它。当系统调用test.sh文件时,该文件不起作用,并且ruby守护进程也没有执行


请帮我解决这个问题。

我猜您的shell脚本是在
root
用户下运行的,该用户没有安装
ruby

尝试使用
su
调用它:

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

要进一步调查您的问题,您应该查看脚本中是否有任何错误

将脚本中的第一行替换为:

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

这将使
bash
脚本变得详细,并将详细输出写入
/var/log/shellscript.log
。这将使您能够查看是否存在任何错误,以及错误是什么。

您如何知道shell脚本实际上正在启动时执行?@JustinWood:因为该脚本还包括其他操作,并且在root用户下启动系统时正常运行,ruby已经安装。我已经检查了哪个命令,
log
说了什么?log没有包含任何内容。它清空了我编辑过的答案-您在
sheelscript.log
中看到了什么?这是我的守护程序脚本,我们实际上正在尝试在启动时运行rb脚本,该脚本在init.d中链接。但我们仍然无法在运行时运行rb脚本。