![]() |
|
Модераторы: ginnie, korob2001 |
![]()
|
|
| tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 0 Всего: 8 |
Задача: читать лог и передавать его на другой сервер построчно.
Сделал демон, открывает лог, читает, парсит, и передаёт. Допустим, демон по какой-то причине упал или не поднялся. Поднимается и читает лог заново? Или в системе сделано так, что лог периодически обрезается. Демон поднимается и читает что? Нужно как-то его читать без повторов и потерь. |
|||
|
||||
| peektoseen |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 15.3.2012 Репутация: нет Всего: нет |
Думаю inetd должен помочь в этом (если конечно система - та самая). Это сообщение отредактировал(а) peektoseen - 21.5.2012, 13:52 |
|||
|
||||
| tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 0 Всего: 8 |
И что он сделает?
Демон есть, логи читает. Надеюсь, у кого-то есть идея как читать лог без повторов и потерь. |
|||
|
||||
| DurRandir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 335 Регистрация: 27.9.2009 Репутация: нет Всего: 17 |
На самом деле, здесь две задачи:
1) "в системе сделано так, что лог периодически обрезается" - обычно это называют ротацией логов. В настройках newsyslog'a можно указать, чтобы при ротации он отправлял сигнал процессу, который этот лог читает. Ну а процесс по сигналу просто переоткрывает лог. Либо, второй вариант, самостоятельно следить за файлом лога через inotify/kqueue. 2) Избегать дублирования. Здесь возникает вопрос - а на каком уровне надёжности важно избежать дублирования? Т.к. можно запоминать только локальную позицию чтения, а дойдёт оно или не дойдёт до принимающей стороны - уже не важно. Либо же считать только подтверждённые удалённой стороной данные - но тогда всё равно могут быть коллизии, т.к. ответ может при падении не дойти - и с дубликатами всё равно придётся бороться. По сути - это те же самые проблемы, которые возникают при репликации баз данных. Ну а куда писать статус чтения - не так важно, хоть в файл, только, опять же, будет либо надёжность (fsync после каждой записи), либо скорость. |
|||
|
||||
| tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 0 Всего: 8 |
Подменяю лог файлом FIFO, который перед запуском сервера открывается на чтение моим специальным демоном, который не падает, и по TCP-запросу другого демона, который пока ещё умеет падать, создаёт потомка, который читает, агрегирует данные и отправляет ответ.
Это сообщение отредактировал(а) tishaishii - 23.5.2012, 23:44 |
|||
|
||||
| rsm |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 999 Регистрация: 16.3.2005 Репутация: нет Всего: 62 |
Новый передовой велосипед, сегодня - с квадратными колёсами? Дело хорошее. Но есть лучше, ещё лучше и совсем хорошо |
|||
|
||||
| tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 0 Всего: 8 |
Велосипед воздвигнут и он всех устраивает.
|
|||
|
||||
![]()
|
| Правила форума "Perl: Системное программирование" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |