Есть ли способ сохранить размер файла журнала фиксированным, не поворачивая его новым пустым файлом и не удаляя (или не архивируя) старый файл. Например, если я установлю максимальный размер файла журнала на 1 МБ, после того, как размер файла превысит этот предел, он будет автоматически ограничен, текст будет добавлен на «хвосте», а самая старая часть текста выскочит, чтобы сохранить размер файла 1 МБ. ,
13
rm -f *.tar.gz.*
Ответы:
Вы можете написать небольшой скрипт для этого. Просто подключите файл к определенному количеству байтов, используя
tail -c
и перезаписав файл.от
man tail
:источник
Ваше единственное решение может состоять в том, чтобы написать собственную файловую систему в пользовательском пространстве или добавить существующую. Посмотрите на частичный список файловой системы в Userspace
Если у вас нет навыков, чтобы внести свой вклад, предложите рекламу проекта или $$$ или и то, и другое, чтобы добавить его для вас.
Я бы хотел, чтобы у меня было время сделать это, я всегда хотел что-то подобное.
источник
Вы можете сделать что-то подобное, используя FIFO, что-то вроде файла нулевого размера.
Однако учтите, что если из этого файла ничего не ПРОЧИТАЕТСЯ, тогда процесс системного журнала может быть заблокирован и прекратит запись во ВСЕ ваши файлы журналов. Я не уверен, изменилось ли это поведение в более новых версиях Ubuntu / CentOS.
Один пример здесь
Для другого примера попробуйте что-то вроде этого.
Сделайте свой FIFO:
И добавьте это в (r) syslog.conf, затем перезапустите syslog:
Затем посмотрите FIFO из одного окна:
И в другом окне отправьте некоторые вещи в системный журнал:
Вы должны увидеть строки «Test *» в выводе
cat
выше.Эта функция может быть полезна для отладки, особенно если вы не хотите хранить данные дольше. Например, если вы хотите видеть только все, кроме спама на брандмауэре, вы можете сделать что-то вроде этого:
источник
Вот мой второй ответ. Это довольно хакерский.
Используйте watch (1) для многократного выполнения
tail --bytes=1024
(последние 1024 байта файла журнала, спасибо @jjclarkson за этот ответ).А затем просмотрите файл с помощью:
Разница между
watch
циклом и while заключается в том,watch
что файл /tmp/messages.watch обновляется только в том случае, если в / var / log / messages были изменения.Ну, я полагаю, вы могли бы вставить
test
цикл while, чтобы tail выполнялся только в том случае, если / var / log / messages был обновлен, но сейчас я этого не пойму.источник
https://groups.google.com/group/mod.sources/browse_thread/thread/b2136b3ab7e924e/f785b37c218bb576?hl=en&ie=UTF-8&q=prune+log+file&pli=1
Многие (большинство? All?) Демоны повторно открывают свои файлы журналов, если отправляют сигнал HUP (например, тем же заданием cron, которое запускает удаление)
источник
Я уверен, что оригинальный постер нашел решение после 8 лет. Вот еще один для других, которые могут читать эту тему ...
curtail ограничивает размер вывода программы и сохраняет последние 200 МБ вывода с помощью следующей команды:
run_program | curtail -s 200M myprogram.log
https://github.com/Comcast/Infinite-File-Curtailer
источник