【问题标题】:init.d script generator for ruby processes?ruby 进程的 init.d 脚本生成器?
【发布时间】:2012-10-26 11:44:07
【问题描述】:

我有一些 ruby​​ 进程,为了开发,我一直在使用 foreman 来管理进程,现在在生产中我想导出进程并在 /etc/init.d 目录中运行它。

是否有任何工具可以帮助解决这个问题,通过创建脚本和相关的 PID 到 /var/run ?我尝试使用工头导出功能来执行此操作,但它不起作用,因为它可以为 inittab 或 upstart 做一些事情,但不能为 init.d 做一些事情。

任何帮助将不胜感激

【问题讨论】:

  • 我更喜欢使用 God 在生产环境中运行我的 ruby​​ 应用程序。
  • 我知道,但这与管理 ruby​​ 进程无关,我已经在使用 Monit 但事实并非如此,我只是在寻找一种工具来帮助我创建脚本而不是手动执行,想在我的进程中使用标准的 init.d
  • 但是,等等,monit 可以为您启动程序。为什么要单独的 init.d 文件?
  • cuz monit 要求我指定 PID 文件以及服务的启动和停止位置,这正是 init.d 所做的,记住我使用的是 ruby​​ 进程而不是 rails,所以我会这样需要手动完成所有这些工作,实际上 forman 似乎做得很好,只是为了新贵和 inittab 而不是为了 init.d blog.daviddollar.org/2011/05/06/introducing-foreman.html
  • 好的,我知道了,在这种情况下,upstart 和 inittab 在您的系统上不可用,我接受吗?无论如何,祝你的问题好运:)

标签: ruby ubuntu foreman init.d


【解决方案1】:

另一个答案可能是使用 https://github.com/ghazel/daemons gem 。

require 'daemons'
require 'process'

Daemons.run('process.rb')

脚本完成后,只需从命令行调用它:

ruby process.rb run|start|stop|restart

此配置将在“/var/run”下生成一个“process.pid”文件,您可以通过该文件使用monit监视进程。

【讨论】:

    【解决方案2】:

    mm好像没有工具可以创建那个,foreman可以导出inittabs,upstart但不是init.d,唯一的办法就是修改文件:

    /etc/init.d/skeleton 
    

    你需要稍微修改一下,然后:

    chmod +x /etc/init.d/process_name 
    sudo update-rc.d process_name defaults
    sudo /etc/init.d/process_name (start| stop| reload ) 
    

    完成。 :)

    【讨论】:

      猜你喜欢
      • 2015-04-13
      • 2015-09-17
      • 2010-11-28
      • 2013-05-09
      • 1970-01-01
      • 1970-01-01
      • 2013-09-29
      • 2011-04-05
      • 1970-01-01
      相关资源
      最近更新 更多