Unix/centos, как проанализировать Access_log и регистрировать любые совпадения с файлом
-
26-10-2019 - |
Вопрос
Я работаю на фоне (SSH)tail -f access_log | grep 'POST /index.php' > test &
Я запустил эту команду внутрь /var/log/httpd
где access_log
а также error_log
хранится.
Я продолжаю делать ls -l
увидеть, если test
Файл изменил размер, но он создан .. и всегда 0 байтов.
Я даже использую правильную команду tail
Я хочу иметь возможность отфильтровать бесполезную информацию Access_log только хранить только post /index.php's в другом файле.
Я знаю, что access_log продолжает изменять себя, даже когда я его итерации, но если можно начать сверху вниз (head
? Я думаю) это было бы лучше.
Решение
tail -f
будет иметь непрерывный выход, поэтому > test
Может никогда не создать файл.
Предложение в ответе Ахмеда Масуда, вероятно, превосходит это, так что попробуйте сначала это, но если это не сработает для вас, вы можете просто запустить это один раз в минуту или один раз в час или что -то в этом роде, если вам не нужно беспокоиться о быть очень эффективным в этом:
grep 'POST /index.php' access_log > test
Это полностью воссоздает файл test
Каждый раз, когда вы запускаете его, а не строите его постепенно. Но если вам просто нужен грубый инструмент, это сделает это.
Если вы сделаете это таким образом, и ваш файл журнала повернут, у вас больше не будет то, что было в предыдущем файле журнала в test
После того, как это работает в новом файле. Так что знайте об этом! С другой стороны, используя tail -f
, если файл вращается, вы перестанете получать данные, пока не перезапустите процесс (и он также взорвет ваши старые данные, если вы не будете использовать >>
скорее, чем >
).
Другие советы
Попробуйте сделать это в сценарии оболочки,
tail -f access_log | while read r ; do
echo $r | grep 'POST[[:space:]]*/index.php' >> out
done
Это должно избавиться от этой надоедливой проблемы.
Другая идея: «Tail -f -n +1» будет отслеживать вращение файла журнала и читать из верхней части файла. Кроме того, вы уверены, что в вашем журнале действительно есть строки Post? Просто спрашиваю ... Наконец, соответствующие ли разрешения на файлы?