【问题标题】:Chef checking log file sizeChef 检查日志文件大小
【发布时间】:2019-02-01 09:05:28
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      你可以试试

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

      【讨论】:

      • 但我希望它像 cron 一样,这意味着例如每 3 分钟执行一次
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-22
      • 2020-03-17
      • 2010-12-08
      • 1970-01-01
      相关资源
      最近更新 更多