Я ищу команду для перечисления 10 или 20 основных URL-адресов ошибок 404 из моего журнала доступа apache. Кто-нибудь может мне с этим помочь?
Спасибо
Предполагая нормальный формат access_log, это должно сделать это:
cat access_log | awk '{ if($9 == 404) { print $7 } }' | sort | uniq -c | sort -nr | head -10
Я сделал это с помощью стандартных утилит unix, awk, sort и т. Д., И это работает довольно хорошо. Поскольку формат ваших журналов может быть другим, вам, возможно, придется изменить некоторые вещи, чтобы они работали в вашей среде, но основная команда будет такой:
cat access_log | awk '/" 404 / {print $7}' | sort | uniq -c | sort -n | tail -n10
Если вы не знакомы с awk, мы делаем следующее:
for each line
if it contains the string '" 404', then
print the 7th field (where fields are space delimited)
Если вы используете собственный формат журнала Apache, вам нужно будет изменить $7
чтобы соответствовать полю для URL-адреса в запросе GET. Вы также можете изменить количество строк из хвостовой команды, чтобы отображать больше или повторять результаты.