Удалить все файлы журнала, кроме текущего файла журнала

Мой sip-сервер генерирует 3 файла журнала за каждый час:

Progress-23May2017-10-00hrs.log Call-23May2017-10-00hrs.log Error-23May2017-10-00hrs.log

Поэтому мне нужно удалить все остальные файлы журнала, кроме журнала текущего часа. Я попытался выполнить эту команду

 find . -type f -name "*-23May2017-10-00hrs.log" -print

она вывела три файла журнала текущего времени.

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

find . -type f -name "!(*-23May2017-10-30hrs.log)" -print

это ничего не дало.

Как удалить другие файлы журнала?

0
23.05.2017, 15:07
2 ответа

Прежде всего: ваши процессы поиска не экранируются, поэтому подстановочные знаки * преобразуются. Чтобы предотвратить это, вы можете использовать обратную косую черту \ или использовать одинарные кавычки '

Итак: найти . -type f -name '*-23May2017-10-00hrs.log' -print должно работать нормально.

Вернемся к вашим настоящим вопросам: Есть несколько способов решить эту проблему. Сначала вы можете использовать функцию find -mtime, чтобы просто прослушать каждый файл, последняя модификация которого была x минут назад. Предположим, ваш sip-сервер ведет журналы по адресу /var/log/sip/

find /var/log/sip/ -type f -name '*.log' -mmin +$((24*60)) - печать покажет вам каждый файл, оканчивающийся на .log и последнее изменение которого было 24*60 минут (1 день) назад.

Однако вы также можете использовать инструмент, предназначенный для обработки журналов, и это logrotate.

logrotate доступен во всех основных дистрибутивах Unix и позволяет сжимать файлы определенного возраста, удалять их другого возраста и так далее. Список функций довольно длинный. Его легко установить, он работает как демон, и вам не нужно возиться с дополнительными cronjobs.

Я предлагаю использовать logrotate. Проверьте его простоту: https://linux.die.net/man/8/logrotate

0
28.01.2020, 04:45
find /home/fi -maxdepth 1 -iname log\* -type f -mmin +1800 | sort | head -n -1 | xargs rm
0
28.01.2020, 04:45

Теги

Похожие вопросы