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 {} \; Ни первый ни второй вариант не удаляют файлы вчерашние. Где ошибка подскажите?


Скорей всего -mtime +1 прошло больше 24 часов, а мне надо каждый день удалять файлы вчерашней датой

Elnar
() автор топика

Старше 1 дня от чего? От даты создания? Последнего изменения? Последнего доступа?

anonymous
()

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

man logrotate

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

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

1. 2018_12_11_17_10_00_alarms.log

2. 2018_12_12_00_10_00_alarms.log

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

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

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

версия linux сильно обрезанная(транковый шлюз Е1->SIP) там такой команды даже нет, чтоб установить наверно еще куча зависимостей надо, памяти всего 70 мб.

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

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

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

Попробовал Чисто проверить найдет ли он что нибудь, пока без удаления find /usr/logs/alarm -type f -mtime \+1 ничего не нашел

Elnar
() автор топика

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

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

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

Пробовал играть с минутам. С первого раза до конца не допер. Сейчас дошло. Самое то, удаляем все кроме последнего файла. Спасибо. Думал с датой поиграть

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

Это вариант отбрасываем, команда не понимает опцию --date=«yesterday». BusyBox v1.19.4

Ребят всем большое спасибо за помощь остаемся на варианте «find -mmin +60»

Elnar
() автор топика

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

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

DonkeyHot ★★★★★
()

Просто настрой logrotate.

PS: у find есть опция -delete. Дёргать -exec без поводу — признак плогого тона.

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

я не против, поставлю -delete, завтра проверим

Elnar
() автор топика
Ответ на: комментарий от 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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.