【问题标题】:Create cron in chef在厨师中创建 cron
【发布时间】:2019-04-16 12:07:58
【问题描述】:
我想在厨师中创建 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-infra
chef-recipe
【解决方案2】:
在您创建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 服务和厨师食谱。