厨师检查日志文件大小

时间:2019-01-29 15:14:15

标签: amazon-web-services chef chef-recipe logfile

我想用Chef创建一个代码,如果它超过30mb,它将测试日志文件的大小,例如它将在cron作业中删除它。

您能帮我吗?

这是我的解决方案,但这不是我想要的:

execute "echo '/srv/#{app['shortname']}/current/app/log/*.log {
    rotate 1
    missingok
    copytruncate
    sharedscripts

    postrotate
            /bin/rm -rf /srv/#{app['shortname']}/current/app/log/*.log*
    endscript
}' >> /etc/logrotate.d/#{app['name']}-app-log-rotation" do
      ignore_failure true
end

2 个答案:

答案 0 :(得分:0)

您可以尝试类似

file '/tmp/y.txt' do
    only_if { ::File.size('/tmp/y.txt').to_f / 1024000 > 30 }
    action :delete
end

答案 1 :(得分:0)

您始终可以使用shell脚本创建文件,以删除该文件并通过Chef cron资源调用该文件

file '/tmp/foo.sh' do
  content "if (wc -c < /tmp/y.txt) > 3072000; then rm -f /tmp/y.txt; fi"
  mode 755
end

cron 'name_of_cron_entry' do
  minute '3'
  command 'sh -x /tmp/foo.sh  > /tmp/backup 2>&1'
end

这将使用该脚本为您创建一个cron条目。