Amazon web services 在chef中创建cron

Amazon web services 在chef中创建cron,amazon-web-services,chef-infra,chef-recipe,Amazon Web Services,Chef Infra,Chef Recipe,我想在chef中创建Cron,如果日志大小大于30mb,他们会验证日志大小,然后将其删除,下面是我的代码: cron_d 'ganglia_tomcat_thread_max' do hour '0' minute '1' command "rm - f /srv/node/current/app/log/simplesamlphp.log" only_if { ::File.size('/srv/node/current/app/log/simplesamlphp.log'

我想在chef中创建Cron,如果日志大小大于30mb,他们会验证日志大小,然后将其删除,下面是我的代码:

cron_d 'ganglia_tomcat_thread_max' do
    hour '0'
  minute '1'
  command "rm - f /srv/node/current/app/log/simplesamlphp.log"
  only_if { ::File.size('/srv/node/current/app/log/simplesamlphp.log').to_f / 1024000 > 30 }
end

你能帮我一下吗欢迎来到Stackoverflow

我建议您使用现有的工具,如“logrotate”


请注意,chef中的“cron”管理独立于chef运行的系统cron服务。您必须在“命令”中执行文件大小检查。最好使用
cron\u d
资源。

以创建
cron\u d
资源的方式,只有当日志文件大小大于30mb时,它才会添加cron任务。在所有其他情况下,不会创建
cron\u d

您可以检查ruby代码

File.size('File')。至\u f/2**20
以兆字节为单位获取文件大小——结果略有不同,我认为这更正确

因此,您可以针对您的具体情况选择2种解决方案

  • 当日志文件小于30 mb时,创建新的
    cron\u d
    资源,以删除现有cron并定期配置节点
  • 使用bash和&&移动命令中文件大小的检查,在这种情况下,只有当文件大小大于30mb时,文件才会被标注日期。诸如此类
du-k file.txt | cut-f1
将返回文件的大小(以字节为单位)


对我来说,正确的方法是使用logrotate服务和厨师食谱

你能帮我创建这个吗?