2017-02-06 3 views
1

У меня есть файл журнала, который ежедневно вращаются (скажем главный лог-файл) Мне нужно захватить журнал ежечасно вверх, чтобы сейчас, то хранить почасовой файл журналаЗахват журнала ежечасно от ежедневного файла журнала

Ex;

Когда я выполнить команду сценария в 02/06/2017 03:41:35 Мне нужно логи между 02:41:35 до 03:41:35

Главный файл журнала

[02/06/2017][00:12:41][58162][3690952448][000000000000000000000000 
[02/06/2017][00:12:41][58162][3690952448][000000000000000000000000 
---------- 
[02/06/2017][03:41:35][57732][3674167040][000000000000000000000000 
[02/06/2017][03:41:35][57732][3674167040][000000000000000000000000 

почасовой файл журнала

[02/06/2017][02:41:35][58162][3690952448][000000000000000000000000 
[02/06/2017][02:41:35][58162][3690952448][000000000000000000000000 
---------- 
[02/06/2017][03:41:35][57732][3674167040][000000000000000000000000 
[02/06/2017][03:41:35][57732][3674167040][000000000000000000000000 

Я должен выполнить следующие команды, но это не захватывая почасовой журнал вместо того, чтобы захватить все журналы

echo $(date -d'now-1 hours' +"[%d/%m/%Y][%H:%M:%S]") | cat mainlog.log 
echo $(date --date='1 hours ago' +"[%d/%m/%Y][%H:%M:%S]") | cat mainlog.log 

ответ

0

Вы прокладываете вывод echo в cat - это не фильтрует ничего. cat будет игнорировать входной сигнал, поступающий через трубу (stdin), поскольку он считывает из файла mainlog.log.

Вы могли бы сделать это вместо (обратите внимание на изменение формата даты - я удалил %M и %S части):

grep -F "$(date -d'now-1 hours' +'[%d/%m/%Y][%H:]')" mainlog.log 
grep -F "$(date -d'1 hours ago' +'[%d/%m/%Y][%H:]')" mainlog.log 

Здесь grep будет искать строки, возвращаемой командой date в журнале файл.

+0

Я попробовал использовать grep в первый раз, как упоминал выше, но результат такой же, но не фиксирует результат между почасовым журналом, который он получает/захватывает все журналы. если у вас есть журнал smtrace_apache, то можно увидеть то же самое :) – user1190910

+0

Пожалуйста, проверьте обновленный ответ. Вероятно, отсутствие опции '-F' вызывало проблему. Кроме того, я изменил формат даты. – codeforester

+0

после опции puttng -F он не будет предоставлять/grepping никакого результата, так или иначе спасибо за то, что вы ввели здесь – user1190910

Смежные вопросы