Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

Linux / DevOps

Команда grep в Linux: быстрый поиск ошибок (Error) в лог-файлах для чайников

Обновлено: 26.08.2026 · Официальная документация ↗

Проблема поиска информации в гигантских лог-файлах

Системные логи Linux (например, /var/log/syslog, логи Nginx или отчеты баз данных) могут весить сотни мегабайт и содержать миллионы строк текста. Попытка открыть такой файл обычным текстовым редактором (nano, vim) приводит к зависанию сервера и переполнению оперативной памяти. Утилита grep (Global Regular Expression Print) позволяет мгновенно отфильтровать файл прямо на диске и вывести на экран только те строки, которые содержат ключевое слово (например, Error, Critical, Fatal или IP-адрес злоумышленника).

Главные полезные флаги утилиты grep

ФлагЧто делаетПример
-iИгнорирует регистр букв (находит и 'error', и 'ERROR', и 'Error').grep -i "error" file.log
-nПоказывает точный номер строки в файле.grep -n "failed" file.log
-cСчитает общее количество совпадений вместо вывода текста.grep -c "404" access.log
-C 3Показывает строку с ошибкой и 3 строки до и после нее (контекст сбоя).grep -C 3 "Exception" app.log

Практические примеры поиска ошибок через grep

Пример 1: Базовый поиск ошибок в системном журнале

Найдем все упоминания слова «error» без учета регистра в файле syslog:

grep -i "error" /var/log/syslog

Пример 2: Поиск через конвейер (Pipe |) из других команд

Отфильтруем вывод другой команды прямо на лету (например, найдем запущенный процесс Nginx):

ps aux | grep nginx

 Поиск нужной строчки в логе веб-сервера:
cat /var/log/nginx/error.log | grep -i "denied"

Пример 3: Просмотр логов в реальном времени с фильтрацией (tail -f + grep)

Смотрите живой поток лога и выводите на экран только строки с критическими сбоями:

tail -f /var/log/nginx/error.log | grep --line-buffered -i "critical"

Пример 4: Рекурсивный поиск по всем файлам в папке (-r)

Найдем, в каком именно конфигурационном файле папки /etc/ прописан старый IP-адрес:

sudo grep -rnw '/etc/' -e '192.168.1.100'
  • -r — рекурсивный поиск во всех подпапках.
  • -w — поиск точного слова целиком (исключает совпадения внутри других слов).

Типовые ошибки администраторов

  • Поиск слова grep в своем же выводе ps aux: При выполнении ps aux | grep nginx в выводе всегда появляется сам процесс grep --color=auto nginx. Чтобы исключить его, используйте команду исключения: ps aux | grep nginx | grep -v grep или трюк с квадратными скобками: ps aux | grep '[n]ginx'.
  • Попытка grep-нуть сжатые архивные логи .gz: Старые ротированные логи архивируются (например, syslog.2.gz). Обычный grep выдаст ошибку бинарного файла. Для сжатых архивов используйте специальную утилиту zgrep: zgrep -i "error" /var/log/syslog.2.gz.
Трудно разобраться в терабайтах логов распределенной инфраструктуры?
ITSTM внедрит централизованный стек сбора и анализа логов ELK (Elasticsearch, Logstash, Kibana) или Graylog с удобными графическими дашбордами и мгновенным поиском.
💡 Практика специалистов: При анализе логов размером от 10 ГБ стандартный grep может работать медленно. Установите современную утилиту 'ripgrep' (команда 'rg') — она написана на Rust, использует многопоточность и выполняет поиск по тексту в 5-10 раз быстрее традиционного GNU grep.

Частые вопросы (FAQ)

Как с помощью grep найти строки, в которых НЕТ определенного слова (инвертировать поиск)?

Используйте флаг -v (Invert Match). Например, команда 'grep -v "DEBUG" app.log' покажет все строки, кроме информационного мусора уровня DEBUG.

Как искать сразу несколько разных слов одновременно (логическое ИЛИ)?

Используйте расширенный синтаксис grep -E (или egrep): grep -E "(ERROR|FATAL|WARN)" app.log

Как вывести 5 строк ПОСЛЕ найденной ошибки?

Используйте флаг -A (After): grep -A 5 "Error" /var/log/syslog. Флаг -B (Before) выведет строки ДО ошибки.

Работает ли grep с кириллицей и русским текстом?

Да, grep полностью поддерживает кодировку UTF-8. Если файл сохранен в кодировке Windows-1251, сконвертируйте вывод через iconv или укажите локаль.

Полезные материалы
Рекомендуем