propeller
написал 11 ноября 2005 года в 00:38 (838 просмотров)
Ведет себя
как мужчина; открыл 53 темы в форуме, оставил 158 комментариев на сайте.
Ставил я у себя программу, которая читала файлы журналов, да вот только она была на перле и потому ела больше памяти, чем мне хотелось бы, да еще и как-то странно себя вела со временем (swatch — описывал ее перлы в разделе Unix FAQ).
Видимо придется писать свою. потому и интересуеюсь, а как читать все новые поступления в файл.
Последние комментарии
- OlegL, 17 декабря 2023 года в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
tail -f
А вообще — открывай файл, да и читай время от времени… :-)
Good Luck,
UT
в том-то и дело, что хотелось бы обойтись быстрее, чем просто открывать, да закрывать все время.
Но tail на самом деле это и делает?
Настрой под себя logcheck
У меня не дебиан! К тому же он тоже, как я понял, использует перл. Это мне не нравится, потому все время будет висеть перл вприбавок ко всему.
Да и хочется уже просто свое написать, чтобы не мучаться потом. просто знать наверное, что все работает.
Лучше скажите, tail устроен как? он все время открывает и закрывает файл и сравнивает, есть ли что новое?
Нет.
Т.о. он открывает файл (м.б. в каком-то специальном режиме — не разбирался) и в цикле с задержкой смотрит его размер, если он изменился, выводит остаток файла. Надеюсь, дальше сам разберёшься. Вообще strace полезная штука.
ниипаца, у меня тоже!
Перл он не использует.
Надо будет еще почитать, что поаниписано про эту программу. как-то я невнимательно, видимо, смотрел на зависимости и описание.
но меня все равно интересует написать ручками, а не взять готовое.
А strace спасет мир! спасибо.
Ужасы! Ну если так хоцца заново изобрести колесо то вот типо алгоритм.
Вариант 1)Делай свое детище в режиме daemon ( fork() or daemon() );
далее при запуске проверяй размер твоего файла. И через определенный интервал времени проверяй его снова. если он увиличился в размерах, то определяй на сколько
(Ну типо новый размер — исходный итд) и потом открывай его и считывай последние n байт.
Вариант 2)
Курить исходники tail и вдумыватся в них.
Вариант 3) (Работает если следится через syslog)
в /etc/syslog.conf пропиши такие строки:
Например у меня как у меня:
И смари логи в консоли по нажатию Alt+F9 (или что там у тебя вместо ttyv9)
Вариант 4) (Самый простой)
Юзать как тебе уже посоветовали tail -f :o)
Вариант 3 на Linux’е (у афтара треда похоже что Debian) не прокатит — там другой syslogd.
Если «афтаром» являюсь я, то у меня Федора.
Но можно быстрее. повесить вывод syslog еще и на один fifo файл. будет много быстрее.