LINUX.ORG.RU
ФорумAdmin

tail -f жрёт память, что делать?

 ,


0

2

Есть огромный лог. Этот лог тэйлится и через tail -f log.log | script непрерывно обрабатывается скриптом. Скрипт считал строчку, выплюнул её обработанную версию и забыл, тут все нормально. А tail начиная с определённого размера начал жрать всю оперативку и загонять всю виртуалку в своп, что неприемлемо в нашем случае. Есть ли какое-то решение, чтобы так не происходило?


Как-то ограничивать размер исходного лога или обрабатывать его кусками скриптом по крону нельзя.

★★★★

Есть огромный лог

А в числах, а не как блондинка?

А tail начиная с определённого размера начал жрать всю оперативку

Размера чего? Строки в логи какие?

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

Когда лог становится больше плюс-минус размера ОЗУ, происходит эта гадость. Наращивать ОЗУ не вариант. Нужно что-то типа tail, которое не будет засасывать в память весь файл.

yu-boot ★★★★
() автор топика
Ответ на: комментарий от hizel

Thx, посмотрю как это и что это.

yu-boot ★★★★
() автор топика
Ответ на: комментарий от yu-boot

мелочь же. у меня такие логи спокойно работают именно в связке tail -f ... | ./script.sh

anonymous
()
# ls -l access.log
-rw-r--r-- 1 root root 8750983335 May 19 11:00 access.log

# wc -l access.log
55938503 access.log

# tail -f access.log

# ps aux | grep tail
root      4361  0.0  0.0  58976   544 pts/0    S    11:04   0:00 tail -f access.log

544KБ памяти


Природа tail такова, что при он не может занимать память.

Осталось выяснить что у тебя за версия tail и заодно какая ОС.
anonymous
()
Ответ на: комментарий от anonymous
# cat /etc/centos-release
CentOS release 6.6 (Final)

# tail --version
tail (GNU coreutils) 8.4
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Paul Rubin, David MacKenzie, Ian Lance Taylor,
and Jim Meyering.
yu-boot ★★★★
() автор топика
Ответ на: комментарий от yu-boot

Твоя проблема не в tail, a в лог-файле или скорее всего в скрипте, который не успевает обрабатывать то что ему выдает tail

# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 6.6 (Santiago)

# tail --version
tail (GNU coreutils) 8.4
anonymous
()
Ответ на: комментарий от anonymous

Это нормально, что второй скрипт пишет в файл и не закрывает его после каждой записи? У меня там CDR телефонные, на каждую поступающую строчку результирующий файл открывать-закрывать??? Я просто flush делаю после записи.

yu-boot ★★★★
() автор топика
Ответ на: комментарий от anonymous
root     25402  0.0  0.0   4104   560 pts/0    S    12:04   0:00 tail -f /var/log/cdr

root     25403  0.0  0.3   5368  3320 pts/0    S    12:04   0:00 /usr/bin/ruby /usr/local/bin/cdr.rb

....

root     24934 11.5  2.3  50196 24608 ?        Sl   11:49   2:59 /usr/sbin/asterisk -f -vvvg -c



Сейчас перезапустил, но может потом раздуется. Цифры на месте стоят.

yu-boot ★★★★
() автор топика
Ответ на: комментарий от yu-boot

Продолжайте наблюдение. На данный момент лечить нечего.

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