在厨师中创建cron

问题描述 投票:1回答:2

我想在厨师巫婆中创建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

请帮帮我

amazon-web-services chef chef-recipe
2个回答
1
投票

欢迎来到Stackoverflow!

我建议你使用像“logrotate”这样的现有工具。 There is a chef cookbook available to manage logrotate

请注意,厨师中的“cron”管理独立于厨师运行的系统cron服务。您必须在“命令”中进行文件大小检查。使用cron_d资源as documented here也更好。


1
投票

在创建cron_d资源的方式中,只有当日志文件的大小超过30mb时才会添加cron任务。在所有其他情况下,将不会创建cron_d

你可以检查ruby代码

File.size('file').to_f / 2**20

获取文件大小以兆字节为单位 - 结果略有不同我认为更正确。

因此,您可以根据具体情况选择2种解决方案

  • 在日志文件小于30 mb时创建新的cron_d资源以删除现有的cron并定期配置节点
  • 使用bash移动检查命令中的文件大小,并使用&&移动 - 在这种情况下,文件将仅在大小大于30mb时使用日期。类似的东西
du -k file.txt | cut -f1

将以字节为单位返回文件的大小

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

© www.soinside.com 2019 - 2024. All rights reserved.