LINUX.ORG.RU

[bash] чистка логов

 


0

0

какими средствами можно сделать это in place? Пробовал
sed -ne '/delete me/d' file.log --in-place
резальтат аналогичен
> file.log
на консоль выводит все правильно, именно те строчки который нужно удалить


Ответ на: комментарий от Komintern

причем тут logrotate?
Нужно из файла безопасно удалить строки по шаблону _без_ tmpfile. Нашел строку - удалил.

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

Открыть файл, прочитать, сохранить обратно.
 
my $filename = $ARGV[0];
my @lines;
open FILE, $filename or die $!;
while (<FILE>) {
    next if /delete me/i;
    push @lines, $_;
}
close FILE;

open FILE, ">".$output_file or die $!;
print FILE $_ for @lines;
close FILE;

# ???
# PROFIT

Biga
()
Ответ на: комментарий от crymos

Нет, уж, вместо `cat logfile` есть утилита sponge. http://www.linux.org.ru/view-message.jsp?msgid=3808446

Или можно написать программу на Си, которая читает и пишет в один файл, а потом обрезает его через truncate. Но даже в этом случае если в лог-файл пишет ещё один процесс (syslog или другой демон), будет проблема.

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