Ruby on rails Ruby守护进程在系统启动时不执行
我已经编写了以下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 =>
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脚本。