后台/守护程序进程

时间:2011-03-27 13:49:56

标签: ruby

我有一个以下面的方式编码的脚本。我想将它作为后台/守护程序进程运行,但是一旦我启动脚本,如果然后我关闭它从程序运行终止的终端窗口。我需要做些什么来保持程序正常运行

loop do

  pid = fork do
    ..........
    ..........
    ..........
  end

  Process.detach(pid)
end

3 个答案:

答案 0 :(得分:9)

上述所有答案都未能真正证明这样做有多容易:

# Daemonize the process and stay in the current directory
Process.daemon(true)

loop do
  pid = Process.fork do
    # Do something funky
  end

  Process.waitpid(pid)

  # Reduce CPU usage
  sleep(0.1)
end

答案 1 :(得分:2)

此stackoverflow问题详细解答了这个问题:Create a daemon with double-fork in Ruby

否则,有一些宝石可以帮助从代码中抽象出来,特别是你可以看看Raad(Ruby作为守护进程)https://github.com/colinsurprenant/raad,它也可以使用JRuby代码(我是Raad的作者。

答案 2 :(得分:1)

男人nohup
       nohup - 运行一个免于挂断的命令,输出为非tty

$ nohup命令>输出&