Создать хрон в шеф-повар - PullRequest
0 голосов
/ 31 января 2019

Я хочу создать Cron в шеф-поваре, который проверяет размер журнала, если он> 30 МБ, он удалит его, вот мой код:

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

Можете ли вы помочь мне в этом, пожалуйста

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019

При создании ресурса cron_d задача cron будет добавляться только в том случае, если размер вашего файла журнала превышает 30 МБ.Во всех остальных случаях cron_d не будет создан.

Вы можете проверить этот код рубина

File.size('file').to_f / 2**20

, чтобы получить размер файла в мегабайтах - в результате получится небольшая разница.считаю, что это более правильно.

, так что вы можете перейти к двум решениям для вашего конкретного случая

  • создать новый ресурс cron_d, когда размер файла журнала меньше 30 МБ, чтобы удалить существующий cronи периодически снабжайте ваш узел
  • перемещением проверки размера файла в команде с помощью bash и склейкой с && - в этом случае файл будет датирован только в том случае, если размер больше 30 МБ.что-то в этом роде
du -k file.txt | cut -f1

вернет размер файла в байтах

Для меня также правильный путь к этому - использовать сервис logrotate и рецепт chef для этого.

0 голосов
/ 31 января 2019

Добро пожаловать в Stackoverflow!

Я предлагаю вам использовать существующие инструменты, такие как «logrotate». Имеется поваренная книга шеф-повара для управления logrotate .

Обратите внимание, что cron в chef управляет системным сервисом cron, который работает независимо от chef.Вы должны будете сделать проверку размера файла в «команде».Также лучше использовать ресурс cron_d , как описано здесь .

...