Команда grep в Linux для новичков: быстрый поиск ошибок (Error) в логах
Файл системного журнала или лог веб-сервера access.log весит сотни мегабайт, содержит миллионы строк, и администратору нужно за секунду найти конкретное сообщение об ошибке, аварийный сбой программы или действия определенного IP-адреса.
Что такое grep?
grep — это мощнейшая утилита поиска в Linux, которая сканирует текст строка за строкой и мгновенно выводит на экран только те строки, которые содержат заданное ключевое слово.
Топ-5 самых полезных комбинаций grep:
1. Простой поиск без учета регистра букв (флаг -i)
Найдем слово «error», даже если в логе написано «ERROR» или «Error»:
grep -i "error" /var/log/syslog2. Поиск по всем файлам в папке рекурсивно (флаг -r)
Найти, в каком именно конфиге внутри папки /etc/nginx/ упоминается домен itstm.ru:
sudo grep -rn "itstm.ru" /etc/nginx/Флаг -n дополнительно покажет точный номер строки в файле!
3. Показ контекста: строки ДО и ПОСЛЕ ошибки (флаги -B, -A, -C)
Чтобы понять причину сбоя, нужно видеть несколько строк, которые происходили перед ошибкой:
grep -i -C 3 "exception" /var/log/app/error.logФлаг -C 3 (Context) выведет саму строку с ошибкой, а также 3 строки ДО нее и 3 строки ПОСЛЕ.
4. Фильтрация живого потока логов в реальном времени (tail -f + grep)
Смотрите только ошибки по мере их поступления в журнал:
sudo tail -f /var/log/nginx/error.log | grep --line-buffered -i "critical"5. Исключение лишнего мусора (инверсия с флагом -v)
Показать все строки лога, кроме стандартных проверок healthcheck:
grep -v "healthcheck" access.log Частые вопросы (FAQ)
Как посчитать общее количество найденных строк с ошибками?
Используйте флаг -c (count): grep -c -i 'error' /var/log/syslog.
Как искать точное совпадение слова целиком, а не части слова?
Используйте флаг -w (word): grep -w 'warn' file.log (найдет слово 'warn', но проигнорирует 'warning').
Можно ли искать сразу несколько разных слов одновременно?
Используйте расширенный поиск egrep или grep -E: grep -E 'error|warning|critical' /var/log/syslog.
Как быстро найти ошибки в сжатых архивных логах .log.gz?
Используйте специальную утилиту zgrep (она читает zip-файлы на лету без распаковки): zgrep -i 'fatal' /var/log/syslog.2.gz.