Выследите “в прошлый час записанные строки от файла журнала”, действительно ли это возможно?

Я пробую к поиску grep шаблона в к файлу журнала, но мне нужно в последний час файла журнала. Хвост-n XX не будет работать. Кто-либо знает, возможно ли это? Некоторый хвост "в прошлый час записанные строки от файла журнала"

Если существует какая-либо команда или процедура, я ценю это.

Большое спасибо

6
задан 5 March 2020 в 13:04

6 ответов

Скажем, Ваш журнал имеет следующую структуру:

219.369.42.449 - - [05/Mar/2020:11:05:17 +0200] "log line"
219.369.42.449 - - [05/Mar/2020:11:06:37 +0200] "log line"
219.369.42.449 - - [05/Mar/2020:12:01:14 +0200] "log line"
219.369.42.449 - - [05/Mar/2020:12:07:23 +0200] "log line"

Мы можем получить все строки от первого вхождения 05/Mar/2020:11 в конец $ из файла при помощи sed следующим образом:

sed -n '/05\/Mar\/2020:11/,$p' "/path/to/file.log"
  • Опция -n подавит нормальный вывод sed, но флаг p распечатает подобранную часть файла.

  • Отметьте, если там не представлен никакая запись что Мах к 05/Mar/2020:11, sed привычка обеспечивает любой вывод.

Мы можем автоматизировать вышеупомянутое справкой команд date и eval:

COMMAND="sed -n '/$(LANG=C date --date='1 hour ago' "+%d\/%b\/%Y:%H")/,\$p'"
eval $COMMAND \"/path/to/file.log\"
  • Используя sed с метками двойной кавычки и переменной в рамках выражения не обеспечивает желаемый вывод в этом случае.
  • Так мы сначала построение команды как строка и преобразовывают его в реальную команду eval.
  • LANG=C (LANG=en_us_88591) стоит для получения желаемого формата даты, потому что, например, в моем случае значение по умолчанию bg_BG.UTF-8.

Можно создать сценарий, на основе этих двух строк выше - примеры такого сценария:

11
ответ дан 17 March 2020 в 00:08

Нет никакой команды или опции выследить, который отследит изменения в прошлый час. Вы будете иметь к grep метки времени в журнале или сохраните tail -f выполнение и просто прокручивает назад, когда необходимо проверить что-то. Это имеет преимущество также разрешения Вам поймать события, которые произошли 61 минуту назад.

4
ответ дан 17 March 2020 в 00:08

При выполнении команды каждые 5 минут также сделайте копию файла журнала. Затем Вы можете разность из 12-й в последний раз копии, которую Вы сделали для получения текущих изменений.

3
ответ дан 17 March 2020 в 00:08

Подход я обычно взятие:

tail -f {log}

Это будет иметь выставочные сообщения хвоста - поскольку они записаны - чтобы {зарегистрироваться}, и это только закончит выполнение поэтому при остановке команды. Таким образом, то, что показывают, является реальным временем и логически также всегда в течение текущего часа. Размер буфера терминального сеанса будет то, туда, где можно прокрутить назад вовремя.

2
ответ дан 17 March 2020 в 00:08

Используйте дату, управляют, чтобы @pa4080 раньше добирался точно один час назад. Передача, что к awk сценарию, который находит первую строку, содержащую корректный год, месяц, день, и или час соответствия и более высокая минута или более высокий час. Вывод от первой строки в конец файла.

Мой awk не настолько силен, или я записал бы это для Вас. Надо надеяться, кто-то еще будет awk ведущим устройством для Вас.

0
ответ дан 17 March 2020 в 00:08

Большое спасибо ко всем. Я мог обработать проблему при помощи Zabbix, контрольного инструмента.

@pa4080, что сценарий был бы следующим opción. Спасибо

Мы можем закрыть этот вопрос.

0
ответ дан 17 March 2020 в 00:08

Другие вопросы по тегам:

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