【问题标题】: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


    【解决方案1】:

    欢迎来到 Stackoverflow!

    我建议您使用“logrotate”等现有工具。 There is a chef cookbook available to manage logrotate

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

    【讨论】:

    • 你能帮我创建这个吗?
    【解决方案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 服务和厨师食谱。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-09-25
      • 1970-01-01
      • 2019-08-24
      • 1970-01-01
      • 1970-01-01
      • 2021-04-21
      • 2012-07-14
      相关资源
      最近更新 更多