Unix/centos, как проанализировать Access_log и регистрировать любые совпадения с файлом

StackOverflow https://stackoverflow.com/questions/8336399

Вопрос

Я работаю на фоне (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? Просто спрашиваю ... Наконец, соответствующие ли разрешения на файлы?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top