Файлы времени и лог-файлы

При тестировании изменений в устаревшей кодовой базе в системе разработки мой предпочтительный метод тестирования заключается в том, чтобы установить системные часы на дату в прошлом, например date -s '-7 days' , затем я воспроизвожу некоторые операции, проверяю вывод и журнал файлы и продвигать дату 1 день, затем воспроизводить больше операций, проверять выходные данные и журналы, продвигаться на 1 день и в основном повторять это до тех пор, пока это необходимо.

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

 logs=$(find /var/log -type f -mtime -0); for log in $logs; do cat /dev/null > $log; done 

Это опустошает файлы журналов, однако то, что мне очень нравится, – это способ удалить «будущие записи» в файлах под /var/log/ и это поддиры ( apache/mysql/... ), которые произошли после текущей даты сервера ,

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

Я использую стабильную версию Debian.

Вы можете использовать logrorate -f, если ваша система использует logrorate. Это должно немедленно вращать (т.е. пустым) все журналы. См. Logrotate (8).

Изменить: на самом деле вашей системе не нужно постоянно использовать логротат, вы можете подготовить файл конфигурации только для этого вращения и запустить его только после того, как вы нажмете время назад. Logrorate также может не потерять все фактические журналы, они только gzipped и самые старые gzips удалены.

Возьмите снимок каталога журнала, так или иначе.

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

Если вы хотите запустить тесты без создания моментального снимка виртуальной машины, вы можете взять резервную копию каталога журнала, а после тестирования восстановить резервную копию и перезапустить демон syslog. Или вы можете временно подключить файловую систему tmpfs в /var/log , перезапустить syslogd, запустить тесты, размонтировать /var/log , перезапустить syslogd.