god是一个易于配置,易于扩展Ruby编写的进程监控框架,让你在服务部署过程中的服务进程和任务运行变得简单,god的目标提供最简单,最强大的监控应用程序。

因为mac天然安装了ruby环境,所以可以直接按照官方推荐的方式安装:

[sudo] gem install god

但是,如果你是在mac下通过这条命令安装的话,会出现如下错误提示:

Building native extensions.  This could take a while...
ERROR:  While executing gem ... (Errno::EPERM)
    Operation not permitted - /usr/bin/god

这是什么鬼?

原来在Mac新版本系统中,内核中引入了Rootless机制。导致下列目录即使是root用户也没有写和执行的权限,只有经过apple签名的才可以。涉及到的目录:

/System
/bin
/sbin
/usr (except /usr/local)

在 stackoverflow 看到有人通过下面这种命令安装:

sudo gem install -n /usr/local/bin god

上命令在mac下是可以安装的,也就是说把god命令安装到了/usr/local/bin目录下。

通过下面命令查看god的安装路径

which god
/usr/local/bin/god

查看god的版本信息

god --version

举个栗子
1, 编写一个ruby小程序(不会写ruby,看的官方实例 ),命名为:hello.rb

loop do
  puts 'Hello'
  sleep 1
end

2, 编写god进程配置文件,文件命名为:hello.god

God.watch do |w|
  w.name = "simple"
  w.start = "ruby /full/path/to/hello.rb"
  w.keepalive
end

3, 运行god,加载配置,有两种方式:

  • 启动god同时加载配置: god -c hello.god
  • 先启动god,再加载配置: god && god load hello.god

好的,就是这个节奏,

通过 god status 命令,可以看到状态如下:

hello: up

说明写的god配置实例加载并启动成功了

参考