gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 04:02:59 25 4
gpt4 key购买 nike

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

请帮我解决这个问题。

最佳答案

我的猜测是您的 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。这应该使您能够查看是否存在任何错误以及错误是什么。

关于ruby-on-rails - Ruby 守护进程不会在系统启动时执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22350470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com