Ruby 如何在chef for linux主机中检查目录中的文件是否发生更改(添加/删除/修改)

Ruby 如何在chef for linux主机中检查目录中的文件是否发生更改(添加/删除/修改),ruby,chef-infra,Ruby,Chef Infra,我正在尝试编写一个chef菜谱,其中我需要添加一些逻辑来检测chef for Linux主机目录中的文件是否发生了更改(添加/删除/修改),如果发生任何更改,我可能可以使用notify重新启动服务 请帮助我提供简单的逻辑,因为文件中不会有剧烈的变化 /local/filebeat/logs是目录,当有新文件添加到其中时,我希望重新启动filebeat服务 directory '/local/filebeat/logs' do owner 'root' group 'root' mod

我正在尝试编写一个chef菜谱,其中我需要添加一些逻辑来检测chef for Linux主机目录中的文件是否发生了更改(添加/删除/修改),如果发生任何更改,我可能可以使用notify重新启动服务

请帮助我提供简单的逻辑,因为文件中不会有剧烈的变化

/local/filebeat/logs
是目录,当有新文件添加到其中时,我希望重新启动filebeat服务

directory '/local/filebeat/logs' do
  owner 'root'
  group 'root'
  mode '0755'
  recursive true
  notifies :restart, 'service[filebeat]'
end

您可以使用厨师通知功能:
通知
订阅
。每个资源在“更新”时触发其通知(每个资源的精确定义各不相同),然后可用于在其他资源上运行操作,在这种情况下,您可能需要对
服务
资源重新启动
操作。

欢迎使用StackOverflow。请更明确地告诉我们,到目前为止您尝试了什么(您的代码)。我不明白你的意思。您是否了解Chef?感谢您的回复,我已经编辑了我的问题并添加了我正在尝试做的事情,我对Chef非常陌生,并且我查看了Chef中通知的文档。这里我真正的问题是如何告诉chef检查/local/filebeat/logsthanks目录中的修改以获得您的响应,从我在问题中发布的示例来看,只有当节点上不存在目录或在节点上第一次运行目录时,服务才会重新启动,如果该目录存在并且在其中添加了新文件,chef将不会重新启动该服务,因为该目录已经存在。如何仅在目录中添加或删除新文件时重新启动服务?您需要使用Chef管理每个文件,它只能跟踪与资源匹配的内容。