NOC online · 24/7Longview, TX · +1 323 412 0665
KinetikatechServers · Security · Websites
RU

Команды Linux и навыки работы с оболочкой

grep: поиск в Linux как профессионал

grep выдерживает каждое обновление инструментальной цепочки, потому что задача никогда не меняется: найти важные строки внутри текста, который растет быстрее, чем кто-либо его очищает. Его реальная сила заключается в словаре флагов, который превращает поиск в ответ: окружающий контекст, списки имен файлов, инвертированные совпадения и коды завершения, по которым может разветвляться сценарий оболочки. Когда сервер плохо себя ведет, расследование начинается с grep и чаще всего, чем кто-либо признает, этим же и заканчивается.

Главное

  1. Рекурсивный поиск с целью: grep -rni 'fail2ban' /var/log --include='*.log' самостоятельно пропускает двоичные файлы и сжатые архивы; простой grep -r поверх /var/log преподает этот урок медленным способом.
  2. Контекст делает совпадения читабельными: -A 3 показывает строки после, -B 3 перед, -C 5 обе; -l выводит только имена файлов, -c подсчитывает совпадения для каждого файла, а -L инвертирует список в недостающие.
  3. Коды выхода являются частью контракта: 0 означает совпадение, 1 означает отсутствие совпадения, 2 означает ошибку; сценарий, который запускает grep -q и игнорирует это различие, одинаково обрабатывает успех и молчание.
  4. Списки цепочек файлов безопасны для нулевых значений: grep -rlZ 'ssl_protocols' /etc/nginx --include='*.conf' | xargs -0 -r ls -l; отбросьте пару Z и -0, и первое имя файла с пробелом разорвет конвейер.
  5. Используйте -E в качестве уровня регулярного выражения по умолчанию для читаемого чередования и используйте -P (обходы, классы \d) только тогда, когда вы согласны с тем, что это расширение GNU, которое BSD grep не поддерживает.
  6. -F рассматривает шаблон как буквальный текст: быстрее и невосприимчив к метасимволам регулярного выражения, проникающим из переменных, вставленных прямо из заявки.
  7. --exclude-dir=.git и --exclude-dir=node_modules запрещают рекурсивный поиск в существующих каталогах только для того, чтобы замедлить его; явно записывайте имена в скриптах, поскольку раскрытие скобок — это удобство bash, а не функция grep.
  8. Разделите привычки: --color=auto для интерактивного удобства, отсутствие цвета в сценариях (управляющие последовательности повреждают журналы) и -n (номера строк), чтобы следующий человек мог найти вставленное вами место.

Заметка из практики

Однажды в 2 часа ночи я пробежал с помощью команды grep -r всю ферму журналов клиента и получил сорок минут тишины за свои хлопоты; добавление --include='*.log' и -l немедленно завершило заявку. Привычки включения и завершения кода теперь действуют раньше шаблона.

Частые вопросы

Почему grep иногда печатает «совпадения двоичных файлов» вместо моей строки?

NUL-байт рядом с совпадением заставляет GNU grep считать файл двоичным; добавьте -a, чтобы принудительно использовать текстовый режим, или -I, чтобы полностью пропустить двоичные файлы, что является правильным значением по умолчанию для каталогов смешанных журналов.

Должен ли я использовать вместо этого ripgrep?

ripgrep работает быстрее и по умолчанию пропускает двоичные и скрытые файлы, но grep существует в каждом ящике, к которому вы когда-либо подключаетесь по SSH, включая образы восстановления. Сначала изучите grep; доберитесь до rg, где он установлен.

Как искать повернутые сжатые журналы?

zgrep прозрачно ищет файлы .gz, а zstdgrep охватывает включенную новую ротацию компрессоров; вчерашняя игла обычно живет внутри одного из них, поэтому инструменты считаются элементарной гигиеной.

Как мне сопоставить слово, но не более длинное слово, содержащее его?

Используйте -w для совпадения по всему слову и -x для совпадений по всей строке; когда шаблонам нужны части слов, классы символов, такие как [Ss]erver, обеспечивают точный контроль без выравнивания регистра повсюду.

Как мы берём на себя команды linux и навыки работы с оболочкой

Это то, чем мы занимаемся каждый день: Команды и сценарии сценариев, которые решают, управляет ли администратор сервером или борется с ним: поиск, преобразование, передача и контроль текста и процессов с помощью инструментов, которые есть в каждой базовой установке. Наша услуга Безопасность серверов Linux и Администрирование серверов закрывает задачу целиком — оценка, внедрение, круглосуточный мониторинг и экстренная реакция в течение 30 минут.

Поговорить с инженером

Проблема с сервером? Взломанный сайт? Медленная страница?

Критические инциденты с ответом в течение 30 минут — круглосуточно, 7 дней в неделю.

Запросить экстренную поддержку support@kinetikatech.com