отрежьте тонкий кусочек файла на основе времени, когда строки будут записаны

[1121886]Я успешно использовал префиксы

  • и

  • для проверки, используйте [1122239]-n

  • 2
    10.05.2014, 19:37
    1 ответ

    Если нет команды, которая позволяет это сделать (как предложил Wiese), почему бы вам не создать внешний индекс вашего файла?

    Просто идея: вы можете сделать скрипт, который будет выполняться вечно (или почти вечно, см. примечания ниже), и задавать временные интервалы для создания индекса.

    PIDofThisInstance=$$
    # ... you code for the header, checks... 
    while true  ; do
      # This is the core of your cycle
        sync   # Maybe
        CurrentSize=`ls -s $MyFile  | awk '{print $1} ' `
        CurrentTime=`date +"%Y%m%d%H%M%S"`
        echo $CurrentTime $CurrentSize >> $Log_Of_My_Log_File
        sleep $TimeToSleep
      # if (exit-condition)
      # then
      #    break           #Exit from the infinite loop.
      # fi
    done 
    

    После этого вы можете сделать другой скрипт, который, учитывая начальную/конечную дату/время, отвечает вам начальными/конечными размерами. Из этих чисел вы можете вырезать ваш файл.

    Вы сказали, что это огромный файл. Поэтому я не предлагаю вам делать с linenumbers и может быть head MyFile.log -n xxx | tail -n yyy. Это будет долго. Лучше работать с размером.

    Примечания:

    • Если это лог с форматированным выводом (даже если он вам неизвестен), то всегда есть вероятность, что существует какой-то инструмент анализа от компании-разработчика/программиста. Возможно, что он появится даже спустя годы. ИМХО лучше не трогать этот формат и создать отдельный файл.
    • Запишите в скрипт такие параметры, как текущий PID (на случай, если нужно убить руками), имя файла (объекта логирования), если знаете PID программы, которая генерирует лог...
    • Цикл может быть вечным или закончиться, если у вас есть условие, например: PID программы, которая генерирует журнал, больше не существует, файл больше не существует, фактический размер меньше старого (вы переместили файл или перезапустили журнал, вам нужно перезапустить индексацию).
    • Если вы держите в памяти $LastSize, вы можете решить, чтобы избежать печати строк в "журнале журнала", когда это не нужно, или остановиться после долгого времени без активности (или динамически изменить временной интервал...)
    1
    27.01.2020, 22:22

    Теги

    Похожие вопросы