Chef 检查日志文件大小

Chef checking log file size

我想用 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

你可以试试

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

您始终可以使用 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 条目。