LINUX.ORG.RU

Удалит файлы старше

 , ,


0

1

Добрый день!

Подскажите пожалуйста как удалить файлы старше 1 дня. find /usr/logs/alarm -mtime +1 -name «*.log» -exec rm {} \;

find /usr/logs/alarm -type f -mtime +1 -exec rm -f {} \; Ни первый ни второй вариант не удаляют файлы вчерашние. Где ошибка подскажите?


Ответ на: комментарий от anonymous

Надо просто удалить каждый день все файлы созданные вчерашней датой. Дата создания, изменения, доступа не меняются. Это лог файлы создаются каждый час, в имени указана дата, время создания.

1. 2018_12_11_17_10_00_alarms.log

2. 2018_12_12_00_10_00_alarms.log

Сегодня удалить 1, завтра 2 и т.д

Все таки я наверно не правильно понял, и ждать надо 24 часа и только тогда удалится 1

Elnar ()
Ответ на: комментарий от Avial

Тут не все так просто,каждый час формируется новый файл и течение этого часа файл дополнятся логами. Если ровно в полночь он удалить все файлы в том числе и вновь созданный(еще не заполненный полностью).То всю информацию за этот час мы потеряем. следующий новый файл будет формироваться только следующем часу.

Elnar ()

Покажи ls этого файла, может он модифицируется позже, а ты не в курсе (но вообще по именам файлов в примере по треду так и есть).

А вообще решение в лоб (с учетом '2018_12_11_17_10_00_alarms.log ') - взять да и rm -f $(date --date="yesterday" +%Y_%m_%d_*alarms.log)

micronekodesu ★★ ()
Последнее исправление: micronekodesu (всего исправлений: 2)

1. Вчерашние логи закончили писаться сегодня в 0:0:0, их так просто не возьмёшь. Можно попробовать сравнивать ctime

2. Для календарных сравнений, вероятно, стоит сравнивать с -daystart

DonkeyHot ★★★★★ ()
Ответ на: комментарий от imul

Файлы синхронизируются по ftp с ПК 00:10:00, для пользователя ftp нет прав на удаление. Поэтому нужен был скрип который 1 раз в сутки удалит все старые файлы дабы не забивать память шлюза.

Решение cron

30 0 * * * find /usr/logs/alarm -type f -mmin +1 -exec rm -f {} \; - работает cron

30 0 * * * find /usr/logs/alarm -type f -mtime +1 - сегодня повторно проверил не работает, хотя в логах были файлы старше 24 часов

Elnar ()
Ответ на: комментарий от Elnar

man find

Numeric arguments can be specified as

       +n     for greater than n,

       -n     for less than n,[/u]

       n      for exactly n.
-mtime n
              File's  data was last modified n*24 hours ago.  See the comments for -atime to understand how
              rounding affects the interpretation of file modification times.
find -mtime -1
В 00:00:00.

anonymous ()