Я пробую к поиску grep шаблона в к файлу журнала, но мне нужно в последний час файла журнала. Хвост-n XX не будет работать. Кто-либо знает, возможно ли это? Некоторый хвост "в прошлый час записанные строки от файла журнала"
Если существует какая-либо команда или процедура, я ценю это.
Большое спасибо
Скажем, Ваш журнал имеет следующую структуру:
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
.Можно создать сценарий, на основе этих двух строк выше - примеры такого сценария:
apache2: Как искать строку из apache2 журналов ошибок в определенном диапазоне времени?
modsecurity-whitelist-rule-generator.bash
- тот синтаксический анализ события в ModSecutity modsec_audit.log
их уникальным идентификатором, и затем генерирует правила белого списка для ModSecutity.
Нет никакой команды или опции выследить, который отследит изменения в прошлый час. Вы будете иметь к grep метки времени в журнале или сохраните tail -f
выполнение и просто прокручивает назад, когда необходимо проверить что-то. Это имеет преимущество также разрешения Вам поймать события, которые произошли 61 минуту назад.
При выполнении команды каждые 5 минут также сделайте копию файла журнала. Затем Вы можете разность из 12-й в последний раз копии, которую Вы сделали для получения текущих изменений.
Подход я обычно взятие:
tail -f {log}
Это будет иметь выставочные сообщения хвоста - поскольку они записаны - чтобы {зарегистрироваться}, и это только закончит выполнение поэтому при остановке команды. Таким образом, то, что показывают, является реальным временем и логически также всегда в течение текущего часа. Размер буфера терминального сеанса будет то, туда, где можно прокрутить назад вовремя.
Используйте дату, управляют, чтобы @pa4080 раньше добирался точно один час назад. Передача, что к awk сценарию, который находит первую строку, содержащую корректный год, месяц, день, и или час соответствия и более высокая минута или более высокий час. Вывод от первой строки в конец файла.
Мой awk не настолько силен, или я записал бы это для Вас. Надо надеяться, кто-то еще будет awk ведущим устройством для Вас.
Большое спасибо ко всем. Я мог обработать проблему при помощи Zabbix, контрольного инструмента.
@pa4080, что сценарий был бы следующим opción. Спасибо
Мы можем закрыть этот вопрос.