【问题标题】:Status of linux service from chef recipe厨师食谱中的 linux 服务状态
【发布时间】:2014-08-25 23:00:28
【问题描述】:

如何通过厨师食谱检查 Linux 服务的状态? 这是我的场景:

  • 我只想在服务未运行时执行一系列步骤。

我想将服务的状态存储在一个变量中(如果可能的话),这样我就可以检查变量的值并进行相应的处理。

编辑:

详细说明我要完成的工作。

  • 我必须将我的应用程序安装为来自 Chef 的 linux 服务。
  • 但是,在我安装服务之前,我想检查一下服务是否已经在机器中运行。
  • 在 Linux 终端中,我会使用命令

    服务我的服务状态。

  • 如果服务没有安装,命令会返回

    我的服务:无法识别的服务

  • 如果已安装并运行,它将返回

    run.sh (pid 10777) 正在运行...

我想在继续安装 chef recipe 之前确定 myservice 的状态。

【问题讨论】:

  • 我不明白这个问题。介意重写这个还是更详细的?我认为举个例子会有所帮助。

标签: ruby chef-infra chef-recipe chef-solo


【解决方案1】:

你可以像这样创建一个简单的助手:

module MyServiceChecker
  def my_service_running?
    cmd = Mixlib::ShellOut.new('/etc/init.d/my_service status')
    cmd.run_command
    cmd.exitstatus == 0
  end
end

Chef::Recipe.send(:include, MyServiceChecker)
Chef::Resource.send(:include, MyServiceChecker)
Chef::Provider.send(:include, MyServiceChecker)

然后当你想检查服务是否正在运行时使用这个助手。根据您的服务和 Linux 衍生产品,命令可能会有所不同。

【讨论】:

  • 谢谢,成功了。我必须使用 cmd.exitstatus 来获取命令状态。
猜你喜欢
  • 2013-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-29
  • 2021-11-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多