LINUX.ORG.RU

обрезать лог


0

0

Привет,

как правильно обрезать открытый файл?

делаю к примеру так

while test e = e ; do echo $(date) test; sleep 1; done >logfile

на самом деле у меня запущенна долгоиграющая прога, выхлоп которой перенаправлен в лог

После того как я из другой консоли делаю

echo «hello» >my.log

сообщения то удаляются, а вот размер файла остается прежним. В нем двадцать строчек текста, первая из которых это «hello» + куча нулевых байтиков таким колличеством, сколько буквов было в логе до того как я туда это «hello» написал. А потом уже идут новые сообщения.

Как быть, останавливать прогу? Нехотелось бы, потому как прога важная, остановка вредна. Спасибо

тьфу, точно, надо же аппендить

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

Уверены? Логический размер файла и количество занимаемых блоков не путаете? А то мне интуиция, эксперименты и опыт подсказывают, что sparsed file получится :-)

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

неуверен, но вспоминая mysql и df предположил.

splinter ★★★★★
()

Нормальные программы ведут логи через syslog, а если сами пишут в лог-файл, то либо позволяют задать размер лог-файла, либо понимают сигнал SIGHUP, и по этому сигналу закрывают/открывают лог-файл. Это позволяет нормально ротировать логи.

Если ваша программа умеет выводить только на stdout, то нужно не перенаправлять её вывод в файл, а делать pipe на программу flog, которая будет писать в заданный файл и понимать SUGHUP, что позволит настроть logrotate.

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.