我想创建一个Ruby脚本,它将像这样开始:
$ ruby script.rb &
然后,我将关闭控制台,它必须保持活着,在后台工作。目前我必须像这样运行它,以便实现:
$ nohup ruby script.rb &
我想摆脱nohup
并直接在脚本中处理SIGHUP - 只需忽略它。有可能吗?
答案 0 :(得分:1)
当然,只有Signal.trap
HUP
信号:
def do_fork
$pid = fork do
Signal.trap("HUP") do
puts "Received HUP, ignoring..."
end
Signal.trap("TERM") do
puts "Received TERM, terminating..."
exit(0)
end
while true do sleep(10_000) end
end
Process.detach($pid)
end
do_fork
将上面的代码复制到某个文件并使用ruby file.rb
运行,看它忽略kill -HUP pid
并关闭kill -TERM pid
。