- чем парсить постоянно открытый файл?, Vitaly_loki, 17:36 , 26-Янв-11 (1)
>[оверквотинг удален] > самое позднее в 23.59. > 4. Софт работает под оффтопиком (со всеми отсюда вытекающими), доступ к csv > в настоящее время организован по smb протоколу. > Уф.. Пока в голову приходит только такой вариант: > 1. Сделать локальную копию файла. > 2. Раз, к примеру, в 5 минут делать diff с удаленным файлом. > 3. Изменненную информацию кидать в базу. > 4. Делать копию файла. > Есть, конечно, вероятность, что между diff и копированием исходный файл может опять > поменяться...Создайте трубу (man mkfifo) в один конец трубы пишет софт (открывает на запись), на другом конце ловите парсером (открывает на чтение)
- чем парсить постоянно открытый файл?, Alting, 08:27 , 27-Янв-11 (2)
>[оверквотинг удален] >> в настоящее время организован по smb протоколу. >> Уф.. Пока в голову приходит только такой вариант: >> 1. Сделать локальную копию файла. >> 2. Раз, к примеру, в 5 минут делать diff с удаленным файлом. >> 3. Изменненную информацию кидать в базу. >> 4. Делать копию файла. >> Есть, конечно, вероятность, что между diff и копированием исходный файл может опять >> поменяться... > Создайте трубу (man mkfifo) в один конец трубы пишет софт (открывает на > запись), на другом конце ловите парсером (открывает на чтение) Да я не могу ее создать. Файл создается софтом под виндовс. И я не могу заставить его создавать трубу.
- чем парсить постоянно открытый файл?, Vitaly_loki, 09:18 , 27-Янв-11 (3)
>[оверквотинг удален] >>> 1. Сделать локальную копию файла. >>> 2. Раз, к примеру, в 5 минут делать diff с удаленным файлом. >>> 3. Изменненную информацию кидать в базу. >>> 4. Делать копию файла. >>> Есть, конечно, вероятность, что между diff и копированием исходный файл может опять >>> поменяться... >> Создайте трубу (man mkfifo) в один конец трубы пишет софт (открывает на >> запись), на другом конце ловите парсером (открывает на чтение) > Да я не могу ее создать. Файл создается софтом под виндовс. И > я не могу заставить его создавать трубу.Трубу создаете на FreeBSD/Linux, для винды это будет выглядеть как обычный файл, в к-й она будет писать. Я думаю переименовывается он при достижении определенного размера, в случае с трубой такого не случится (если из-за этого конечно). У нее всегда фиксированный размер
- чем парсить постоянно открытый файл?, Alting, 09:47 , 27-Янв-11 (4)
>[оверквотинг удален] >>>> Есть, конечно, вероятность, что между diff и копированием исходный файл может опять >>>> поменяться... >>> Создайте трубу (man mkfifo) в один конец трубы пишет софт (открывает на >>> запись), на другом конце ловите парсером (открывает на чтение) >> Да я не могу ее создать. Файл создается софтом под виндовс. И >> я не могу заставить его создавать трубу. > Трубу создаете на FreeBSD/Linux, для винды это будет выглядеть как обычный файл, > в к-й она будет писать. Я думаю переименовывается он при достижении > определенного размера, в случае с трубой такого не случится (если из-за > этого конечно). У нее всегда фиксированный размер Простите, если я правильно ошибаюсь, то порядок моих действий такой: 1. Останавливаю сервис на винде. 2. Удаляю файл csv 3. Монтирую шару на линуксе и создаю трубу с тем же именем, что и файл был на виндовой шаре. 4. Стартую сервис на винде. Так? Файл пересоздается раз в сутки а не по достижении определенного размера, к сожалению... Просто, как и все, что написано под кривую ОС - эти "раз в сутки" софтом понимаются, мягко говоря, фривольно - может в 9 вечера пересоздать, может в полночь. Никаких настроек по точному времени в самом софте, когда переименовывать файл в бэкапный и создавать новый, к сожалению, нет :( Так что, скорее всего, труба "не прокатит" :(
- чем парсить постоянно открытый файл?, sn, 10:43 , 27-Янв-11 (5)
> Файл пересоздается раз в сутки а не по достижении определенного размера, к > сожалению... > Просто, как и все, что написано под кривую ОС - эти "раз > в сутки" софтом понимаются, мягко говоря, фривольно - может в 9 > вечера пересоздать, может в полночь. Никаких настроек по точному времени в > самом софте, когда переименовывать файл в бэкапный и создавать новый, к > сожалению, нет :( > Так что, скорее всего, труба "не прокатит" :( fifo на подмонтированном в free/lin виндовом разделе и создать наверное не удастся. Предложу запускать парсер так: tail -f file | parser. Но как обыграть пересоздание файла filе нужно придумать.
- чем парсить постоянно открытый файл?, Vitaly_loki, 13:55 , 27-Янв-11 (6)
> 1. Останавливаю сервис на винде. > 2. Удаляю файл csv > 3. Монтирую шару на линуксе и создаю трубу с тем же именем, что и файл был на виндовой шаре. > 4. Стартую сервис на винде. > Так?Все верно, кроме пункта 3. Надо fifo создать в локальной файловой системе и винде отдать это через SMB-шару >[оверквотинг удален] >> Просто, как и все, что написано под кривую ОС - эти "раз >> в сутки" софтом понимаются, мягко говоря, фривольно - может в 9 >> вечера пересоздать, может в полночь. Никаких настроек по точному времени в >> самом софте, когда переименовывать файл в бэкапный и создавать новый, к >> сожалению, нет :( >> Так что, скорее всего, труба "не прокатит" :( > fifo на подмонтированном в free/lin виндовом разделе и создать наверное не удастся. > Предложу запускать парсер так: > tail -f file | parser. Но как обыграть пересоздание файла filе нужно > придумать. Да не-е-е )) fifo создать в директории, к-ю Самба будет отдавать как винд-шару. На винде ее подключить как сетевой диск и пусть софт в нее пишет :) Но остается одна нерешенная трабла - переменование файла
- чем парсить постоянно открытый файл?, seeryoga, 18:23 , 31-Янв-11 (7)
> tail -f file | parser. Но как обыграть пересоздание файла filе нужно придумать.Опция -F работает также, как и опция -f, но tail также будет проверять, не был ли отслеживаемый файл переименован или обновлён. Файл закрывается и открывается снова, если tail обнаружит, что файл имеет новый номер индексного дескриптора (inode). Это то, что нужно.
- чем парсить постоянно открытый файл?, Alting, 09:54 , 01-Фев-11 (8)
>> tail -f file | parser. Но как обыграть пересоздание файла filе нужно придумать. > Опция -F работает также, как и опция -f, но tail также будет > проверять, не был ли отслеживаемый файл переименован или обновлён. Файл закрывается > и открывается снова, если tail обнаружит, что файл имеет новый номер > индексного дескриптора (inode). > Это то, что нужно.Спасибо за наводочку... Вот еще бы как-то заставить этот тупой софт писать по строчке в единицу времени... А не кидать скопом разное количество строк в произвольную единицу времени... Вот только, если я правильно ошибаюсь, инод в ntfs нету... Или есть?
- чем парсить постоянно открытый файл?, sn, 10:56 , 01-Фев-11 (9)
> Вот еще бы как-то заставить этот тупой софт писать по строчке в > единицу времени... А не кидать скопом разное количество строк в произвольную > единицу времени...Может еще и парсер нам для тебя написать :( > Вот только, если я правильно ошибаюсь, инод в ntfs нету... Или есть? inode и не нужен. вот что в мане написано: With --follow (-f), tail defaults to following the file descriptor, which means that even if a tail'ed file is renamed, tail will continue to track its end. This default behavior is not desirable when you really want to track the actual name of the file, not the file descriptor (e.g., log rotation). Use --follow=name in that case. That causes tail to track the named file in a way that accommodates renam- ing, removal and creation.
- чем парсить постоянно открытый файл?, Alting, 11:23 , 01-Фев-11 (10)
>> Вот еще бы как-то заставить этот тупой софт писать по строчке в >> единицу времени... А не кидать скопом разное количество строк в произвольную >> единицу времени... > Может еще и парсер нам для тебя написать :( Ну мы с Вами вроде еще на брудершафт не пили? >[оверквотинг удален] > file is renamed, tail will continue to track its end. > This > default behavior is not > desirable when you really want to track the actual name of > the file, not the file > descriptor (e.g., log rotation). Use --follow=name in that > case. That > causes tail to track the named file in a way that > accommodates renam- > ing, removal and creation. Парсер я писать не просил. За наводку спасибо!
- чем парсить постоянно открытый файл?, seeryoga, 16:30 , 01-Фев-11 (11)
> Спасибо за наводочку... > Вот еще бы как-то заставить этот тупой софт писать по строчке в > единицу времени... А не кидать скопом разное количество строк в произвольную единицу времени... > Вот только, если я правильно ошибаюсь, инод в ntfs нету... Или есть? NTFS использует файловые записи - это подобие inode, и если я правильно ошибаюсь, вас интересовать это не должно, т.к. это забота О.С. И как поступает инфа из софта тоже не важно. Главное использовать опцию -F (если система *BSD)
- чем парсить постоянно открытый файл?, Alting, 11:45 , 02-Фев-11 (12)
>> Спасибо за наводочку... >> Вот еще бы как-то заставить этот тупой софт писать по строчке в >> единицу времени... А не кидать скопом разное количество строк в произвольную единицу времени... >> Вот только, если я правильно ошибаюсь, инод в ntfs нету... Или есть? > NTFS использует файловые записи - это подобие inode, и если я правильно > ошибаюсь, вас интересовать это не должно, т.к. это забота О.С. > И как поступает инфа из софта тоже не важно. Главное использовать опцию > -F (если система *BSD) Ага, попробовал. Оставил на ночь, в tail-е появились строчки, что файл изменен и парсит дальше. Буду теперь чистить от мусора вывод, спасибо за ключик :) P.S. система, кстати, линукс, но работает!
|