grep - поиск в Linux, примеры

Сие опубликовал в день года

1. Немного про grep

Команда grep (global regular expression print) остается одной из наиболее универсальных команд в окружении командной строки Linux. Это происходит потому что grep является чрезвычайно мощной утилитой которая дает пользователям возможность сортировать ввод на основе сложных правил, тем самым делая ее популярным связующим звеном в конвейере команд. Grep в основном используется для поиска текста как в данных поступающих на стандартный вход, так и в указанных файлах на предмет строк содержащих указанные слова или подстроки.

2. Базовый синтаксис команды grep

Ниже представлены примеры использования grep с базовым синтаксисом:

grep 'word' filename
grep 'word' file1 file2 file3
grep 'string1 string2'  filename
cat otherfile | grep 'something'
command | grep 'something'
command option1 | grep 'data'
grep --color 'data' fileName

3. Как использовать grep для поиска в файлах

Попробуем найти пользователя "vasya" в файле passwd. Для поиска в файле /etc/passwd информации о пользователе "vasya" необходимо использовать следующую команду:

grep vasya /etc/passwd

Пример результата:

vasya:x:1000:1000:vasya,,,:/home/vasya:/bin/bash

Также мы можем попросить grep... Читать целиком.

Debian список установленных пакетов

Сие опубликовал в день года

Чтобы получить список пакетов, установленных в системе, воспользуйтесь командой

sudo dpkg --get-selections "*" > ~/my_packages.txt

Затем этот файл можно скопировать на новую систему и установить пакеты из списка:

sudo dpkg --set-selections < my_packages.txt
sudo apt-get -u dselect-upgrade

Конечно, это относится к дистрибутивам Linux, основанным на Debian.

xd - быстрая навигация по директориям

Сие опубликовал в день года

xd - это умная альтернатива для cd которая ускоряет навигацию по директориям в терминале. Вы можете перейти в директорию только по первым буквам в названии или первым буквам директорий в пути. Например, если вы хотите перейти в директорию /usr/local/etc, то вы можете набрать команду xd ule и xd переведет вас в эту директорию или покажет список альтернатив которые подходят под данный набор символов. Список альтернатив нумеруется и для перехода по одному из путей достаточно нажать клавишу с подходящей цифрой.

xd очень гибкая утилита. Директории могут быть проигнорированы с использованием директив в конфигурационном файле xd. Вы можете указать начинать подбор директорий с корневой директории или с текущей. Если начать путь с символа /, то поиск будет осуществляться с корневой директории сервера, если с . (точка), то относительно домашней директории аккаунта, а если с 0 (ноль), то относительно текущей директории.

Установка:

aptitude install xd

и это только половина дела. Фактически xd только ищет пути подходящие под набор... Читать целиком.

Использование cURL и заголовка host для обхода балансировщика нагрузки

Сие опубликовал в день года

Если у вас есть балансировщик нагрузки и расположенные за ним бэкенды с рядом виртуальных хостов и вы хотите обратиться к определенному бэкенду и определенному виртуальному хосту, то у вас могут возникнуть небольшие трудности.

Основная проблема в том, что если вы обратитесь к domain.tld, то попадете на балансировщик нагрузки и затем будете направлены на случайный бэкенд. Но мы хотим подключиться к определенному серверу напрямую, поэтому требуется использовать его IP-адрес. Например, так:

curl 'http://10.1.2.28:81/'

Однако из-за того, что серверы используют виртуальные хосты основанные на доменных именах, то в ответ мы получим ошибку 404. Трюк в том, чтобы передавать заголовок Host:

curl --header 'Host: domain.tld' 'http://10.1.2.28:81/'

Это позволит нам запросить нужный виртуальный хост на нужном бэкенде.

Как добавлять, редактировать или удалять задания cron в пакетном режиме

Сие опубликовал в день года

Установка заданий cron в пакетном режиме

Указывая имя файла в качестве аргумента для команды cron вы можете установить новые задания cron из текстового файла. Как это сделать показано ниже.

Прежде всего вам необходимо создать текстовый файл со всеми необходимыми заданиями cron.

cat cronjobs.txt

* * * * * echo How are you? > q.txt
* * * * * echo I am OK. > a.txt

Далее установите задания следующим образом:

crontab cronjobs.txt

Обратите внимание, что эта команда полностью перезапишет все существующие задания. Стоит предварительно сохранить задания cron:

crontab -l > currentjobs.txt

Редактирование crontab в пакетном режиме.

Вы можете редактировать crontab в пакетном режиме используя несколько методов (к примеру, с использованием sed).

Пример: изменить перенаправление вывода с перезаписи (>) на добавление (>>) для всех заданий в cron.

crontab -l

* * * * * echo How are you? > q.txt
* * * * * echo I am OK. > a.txt

crontab -l | sed 's/>/>>/' | crontab -
crontab -l

* * * * * echo How are you? >> q.txt
* * * * * echo I am OK. >> a.txt

Удалить все задачи для текущего пользователя.

Команда... Читать целиком.

Однострочники для анализа лог-файлов Apache

Сие опубликовал в день года

Для диагностики проблем мне часто приходится просматривать логи Apache. Со временем я создал серию однострочников, которые я могу быстро скопировать и вставить для быстрого анализа лог-файла на предмет проблем, популярных страниц и прочего.

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

Однострочники - это обычно первый шаг в диагностике проблемы. Например, я хочу посмотреть данные за определенный период вместо использования команды tail на логе соединений. В этом случае я использую fgrep ‘2014:05:’ ./access.log чтобы посмотреть что происходило между 5:00 и 5:59. Или, может быть, я хочу посмотреть что делал определенный IP и тогда я грепаю по IP и получаю топ 20... Читать целиком.

Наверх