厨师 - 在背景中运行长时间运行的脚本

时间:2013-03-30 09:09:12

标签: ruby chef

我想在后台运行一个简单的脚本。它需要在机器的整个寿命期间保持活力。

script "my_script" do
interpreter "ruby"
cwd "/home/my_home"
user "root"
code << -EOH
  pid = fork
  if pid
     Process.detach(pid)
     system("ruby the_actual_script.rb > logfile")
  end
EOH

但这似乎没有运行,它似乎已经运行并立即退出。有一个0大小的日志文件。我将cwd文件夹设置为777权限。

无法弄清问题是什么。我猜厨师在一个不同的shell中执行此操作,并在退出该shell后删除所有进程?

有没有更好的方法可以在后台运行脚本?

1 个答案:

答案 0 :(得分:3)

您描述的内容称为“服务”。您可以将脚本放在自己的文件中,例如使用“cookbook_file”主厨资源。然后为它编写一个init脚本,例如在Ubuntu系统中使用upstart。获得init脚本后,您可以使用chef的“服务”资源来确保服务始终运行,并且在创建它的第一个Chef运行期间启动它。瞧!