回答
使用Daemonize.rb
require 'daemons'
Daemons.daemonize
很简单的例子:http://github.com/utkarsh2012/backitup/blob/master/backitup.rb
如何安装守护宝石:
gem install daemons
这是一个module来守护您的代码。这是一个包含现有脚本的offshoot。
本质上,它归结为这个(特拉维斯威顿的Daemonize.rb,上面的第一个环节,修改了某些程序我前写的年龄):
private
# This method causes the current running process to become a daemon
# If closefd is true, all existing file descriptors are closed
def daemonize(pathStdErr, oldmode=0, closefd=false)
srand # Split rand streams between spawning and daemonized process
safefork and exit# Fork and exit from the parent
# Detach from the controlling terminal
unless sess_id = Process.setsid
raise 'Cannot detach from controlled terminal'
end
# Prevent the possibility of acquiring a controlling terminal
if oldmode.zero?
trap 'SIGHUP', 'IGNORE'
exit if pid = safefork
end
Dir.chdir "/" # Release old working directory
File.umask 0000 # Insure sensible umask
if closefd
# Make sure all file descriptors are closed
ObjectSpace.each_object(IO) do |io|
unless [STDIN, STDOUT, STDERR].include?(io)
io.close rescue nil
end
end
end
STDIN.reopen "/dev/null" # Free file descriptors and
STDOUT.reopen "/dev/null" # point them somewhere sensible
STDERR.reopen pathStdErr, "w" # STDOUT/STDERR should go to a logfile
return oldmode ? sess_id : 0 # Return value is mostly irrelevant
end
# Try to fork if at all possible retrying every 5 sec if the
# maximum process limit for the system has been reached
def safefork
tryagain = true
while tryagain
tryagain = false
begin
if pid = fork
return pid
end
rescue Errno::EWOULDBLOCK
sleep 5
tryagain = true
end
end
end
啊,谷歌来救援!退房
http://fitzgeraldsteele.wordpress.com/2009/05/04/launchd-example-start-web-server-at-boot-time/
其中一个有用的博客提供写的launchd plist中推出了红宝石的Web应用程序服务器的一个例子。
很高兴您认为这有帮助!我个人喜欢launchd ...对于一个它可以重新启动你的过程,如果它意外死亡。 – fitzgeraldsteele 2010-10-25 21:13:31
它不适用于Windows。 – Olathe 2013-02-12 17:50:33
需要看到后台程序导轨宝石为Rails 3(基于rails_generator):
https://github.com/mirasrael/daemons-rails
可以生成守护存根这样的:
rails generate daemon <name>
特点:
- individual con每个守护特伦脚本
- 耙:每守护守护命令
- Capistrano的友好
- 应用范围的控制脚本
- 监测API
- 可能多个后台程序设置
- 1. Ruby守护进程决定
- 2. Ruby守护进程Gem
- 3. 定时器()作为守护进程与非守护进程
- 4. Ruby守护进程vs守护进程gem:有哪些优点和缺点?
- 5. Ruby守护进程和频率
- 6. 干净关机的Ruby守护进程
- 7. Ruby守护进程不工作
- 8. 动态Ruby守护进程管理
- 9. Ruby守护进程和bluepill监控
- 10. Ruby守护进程不会启动
- 11. 使用python,守护进程
- 12. Linux守护进程
- 13. iphone守护进程
- 14. Python守护进程
- 15. Monotouch守护进程应用程序
- 16. MAC更改程序或守护进程?
- 17. 桌面程序守护进程?
- 18. java守护进程线程
- 19. Linux守护进程停止启动 - 停止守护进程
- 20. python守护进程的单个实例(使用python守护进程)
- 21. 扭曲:从另一个应用程序守护进程产生应用程序守护进程
- 22. init进程是一个守护进程
- 23. 可选择守护进程Python进程
- 24. Python进程池非守护进程?
- 25. 使java.util.Timer成为守护进程的正确方法
- 26. Java中的守护进程和非守护线程优先级
- 27. 守护进程结构
- 28. Authlogic&delayed_job&delayed_jobl_mailer&守护进程?
- 29. Windows的Docker守护进程
- 30. 与守护进程交谈
这可能是一个愚蠢的问题,但daemonize.rb文件在哪里?它是一颗宝石,在网上我能找到它的地方,它是标准库,还是什么? – agentbanks217 2010-09-10 23:05:24
这是一颗宝石。你只需安装并开始使用它。 – zengr 2010-09-10 23:13:08
好的非常感谢。 – agentbanks217 2010-09-10 23:51:07