Примеры использования команды grep в Linux
Отображение строк до или после строки с результатом поиска
Часто пользователю нужно вывести на экран не только строку, содержащую искомый шаблон. Но и несколько строк до или после нее, чтобы лучше понимался контекст. Специально на такой случай у команды grep есть две особых опции:
-A (от англ. After) — указанное количество строк до шаблона;
-B (от англ. Before) — указанное количество строк после шаблона.
Попробуем отфильтровать вывод команды ifconfig, который для непривычного пользователя может быть излишне объемным.
Таким образом Вы получите строку, содержащую шаблон eth0, а также 4 строки до нее:
Тогда как таким способом Вы получите строку, содержащую шаблон UP, а также 2 строки после нее:
Выведение заданного числа всех соседних строк с помощью команды grep
В том случае, если Вы точно не знаете, какие именно соседние строки (до или после строки, содержащей шаблон) Вам нужны — воспользуйтесь командой grep с опцией -C. Следующая комбинация команд выведет на экран по 2 строки до и после строчки вывода команды ifconfig, содержащей шаблон lo:
Подсчет числа строк, содержащих искомое выражение
В некоторых случаях Вам могут понадобится не сами строчки, включающие заданное выражение, а их общее количество. В таком случае воспользуйтесь опцией -c. Следующая комбинация команд выведет на экран количество строк в выводе команды ifconfig, включающих шаблон inet6.
Рекурсивный поиск строки по всем каталогам с помощью команды grep
Предположим, что Вам необходимо найти все вложения указанного выражения в текущем каталоге со всеми его подкаталогами и так далее. Для этого добавьте к команде grep опцию -r:
В результате утилита будет рекурсивно искать выражение "function" по всему дереву каталогов, начинающемуся с рабочего каталога.
Поиск в архивах gzip
Утилита gzip (от англ. GNU Zip) — это популярный инструмент для сжатия данных без потерь в Linux, использующий алгоритм Deflate.
При этом с помощью команды zgrep можно вести поиск по сжатому архиву точно так же, как Вы это делали вне сжатого архива с помощью команды grep. Следующая команда будет искать в архиве /var/log/syslog.2.gz строки, содержащие шаблон error с игнорированием регистра:
Отображение строк до или после строки с результатом поиска
Часто пользователю нужно вывести на экран не только строку, содержащую искомый шаблон. Но и несколько строк до или после нее, чтобы лучше понимался контекст. Специально на такой случай у команды grep есть две особых опции:
-A (от англ. After) — указанное количество строк до шаблона;
-B (от англ. Before) — указанное количество строк после шаблона.
Попробуем отфильтровать вывод команды ifconfig, который для непривычного пользователя может быть излишне объемным.
Таким образом Вы получите строку, содержащую шаблон eth0, а также 4 строки до нее:
# ifconfig | grep –A 4 eth0
Тогда как таким способом Вы получите строку, содержащую шаблон UP, а также 2 строки после нее:
# ifconfig | grep -B 2 UP
Выведение заданного числа всех соседних строк с помощью команды grep
В том случае, если Вы точно не знаете, какие именно соседние строки (до или после строки, содержащей шаблон) Вам нужны — воспользуйтесь командой grep с опцией -C. Следующая комбинация команд выведет на экран по 2 строки до и после строчки вывода команды ifconfig, содержащей шаблон lo:
# ifconfig | grep -C 2 lo
Подсчет числа строк, содержащих искомое выражение
В некоторых случаях Вам могут понадобится не сами строчки, включающие заданное выражение, а их общее количество. В таком случае воспользуйтесь опцией -c. Следующая комбинация команд выведет на экран количество строк в выводе команды ifconfig, включающих шаблон inet6.
# ifconfig | grep -c inet6
Рекурсивный поиск строки по всем каталогам с помощью команды grep
Предположим, что Вам необходимо найти все вложения указанного выражения в текущем каталоге со всеми его подкаталогами и так далее. Для этого добавьте к команде grep опцию -r:
В результате утилита будет рекурсивно искать выражение "function" по всему дереву каталогов, начинающемуся с рабочего каталога.
# grep –r "function" *
Поиск в архивах gzip
Утилита gzip (от англ. GNU Zip) — это популярный инструмент для сжатия данных без потерь в Linux, использующий алгоритм Deflate.
При этом с помощью команды zgrep можно вести поиск по сжатому архиву точно так же, как Вы это делали вне сжатого архива с помощью команды grep. Следующая команда будет искать в архиве /var/log/syslog.2.gz строки, содержащие шаблон error с игнорированием регистра:
# zgrep –i error /var/log/syslog.2.gz
This media is not supported in your browser
VIEW IN TELEGRAM
Сетевые протоколы
1. HTTP (Hypertext Transfer Protocol):
Веб-коммуникация: Обеспечивает взаимодействие браузера и сервера, подходит для незащищенной передачи данных.
2. HTTPS (Hypertext Transfer Protocol Secure):
Безопасная веб-связь: Обеспечивает конфиденциальность благодаря шифрованию SSL/TLS.
3. FTP (File Transfer Protocol):
Передача файлов: Облегчает обмен файлами между компьютерами, используя отдельные каналы.
4. TCP (Transmission Control Protocol):
Надежная доставка данных: Обеспечивает упорядоченную и надежную передачу данных с проверкой на ошибки.
5. IP (Internet Protocol):
Управление пакетами данных: Занимается маршрутизацией и адресацией пакетов данных, присваивая уникальные IP-адреса.
6. UDP (User Datagram Protocol):
Быстрая передача данных: Обеспечивает бесконтактную и более быструю передачу данных без функций обеспечения надежности.
7. SMTP (Simple Mail Transfer Protocol):
Отправка электронной почты: Управляет отправкой электронной почты между серверами с помощью архитектуры клиент-сервер.
8. SSH (Secure Shell):
Безопасный удаленный доступ: Обеспечивает безопасный доступ к удаленным устройствам, шифруя связь между клиентом и сервером.
9. IMAP (Internet Message Access Protocol):
Доступ к электронной почте: Позволяет получать доступ и извлекать электронную почту с сервера, сохраняя ее на сервере.
1. HTTP (Hypertext Transfer Protocol):
Веб-коммуникация: Обеспечивает взаимодействие браузера и сервера, подходит для незащищенной передачи данных.
2. HTTPS (Hypertext Transfer Protocol Secure):
Безопасная веб-связь: Обеспечивает конфиденциальность благодаря шифрованию SSL/TLS.
3. FTP (File Transfer Protocol):
Передача файлов: Облегчает обмен файлами между компьютерами, используя отдельные каналы.
4. TCP (Transmission Control Protocol):
Надежная доставка данных: Обеспечивает упорядоченную и надежную передачу данных с проверкой на ошибки.
5. IP (Internet Protocol):
Управление пакетами данных: Занимается маршрутизацией и адресацией пакетов данных, присваивая уникальные IP-адреса.
6. UDP (User Datagram Protocol):
Быстрая передача данных: Обеспечивает бесконтактную и более быструю передачу данных без функций обеспечения надежности.
7. SMTP (Simple Mail Transfer Protocol):
Отправка электронной почты: Управляет отправкой электронной почты между серверами с помощью архитектуры клиент-сервер.
8. SSH (Secure Shell):
Безопасный удаленный доступ: Обеспечивает безопасный доступ к удаленным устройствам, шифруя связь между клиентом и сервером.
9. IMAP (Internet Message Access Protocol):
Доступ к электронной почте: Позволяет получать доступ и извлекать электронную почту с сервера, сохраняя ее на сервере.
👍2
Шпаргалка по systemd
Управление состояниями системы:
1. Перезагрузка системы:
2. Выключение системы:
3. Перевести систему в спящий режим:
4. Перевести систему в гибернацию:
5. Перевести систему в гибридный режим сна:
Работа с юнит-файлами:
1. Показать путь к юнит-файлу службы:
2. Редактирование юнит-файла службы:
Команда откроет конфигурацию в редакторе. Можно использовать флаг --full для редактирования полной версии юнит-файла.
3. Переактивация всех юнитов после изменений:
4. Показать конфигурацию службы:
5. Показать все зависимости службы:
Логи:
1. Просмотр логов службы:
2. Просмотр системных логов с конца:
3. Просмотр логов для текущей сессии:
4. Просмотр логов ядра:
Другие полезные команды:
1. Получить статус загрузки:
2. Перевести систему в однопользовательский режим (rescue mode):
3. Перевести систему в режим восстановления (emergency mode):
Описание формата юнит-файлов:
Юнит-файлы обычно хранятся в /etc/systemd/system/ или /lib/systemd/system/.
- [Unit] — Определяет общие атрибуты юнита, такие как описание и зависимости.
- [Service] — Конфигурация для сервисов, например, что запускать (`ExecStart=`) и как управлять процессом.
- [Install] — Настройки для включения или отключения юнита при загрузке.
Пример юнит-файла:
Управление состояниями системы:
1. Перезагрузка системы:
systemctl reboot
2. Выключение системы:
systemctl poweroff
3. Перевести систему в спящий режим:
systemctl suspend
4. Перевести систему в гибернацию:
systemctl hibernate
5. Перевести систему в гибридный режим сна:
systemctl hybrid-sleep
Работа с юнит-файлами:
1. Показать путь к юнит-файлу службы:
systemctl show -p FragmentPath <имя_сервиса>
2. Редактирование юнит-файла службы:
systemctl edit <имя_сервиса>
Команда откроет конфигурацию в редакторе. Можно использовать флаг --full для редактирования полной версии юнит-файла.
3. Переактивация всех юнитов после изменений:
systemctl daemon-reload
4. Показать конфигурацию службы:
systemctl cat <имя_сервиса>
5. Показать все зависимости службы:
systemctl list-dependencies <имя_сервиса>
Логи:
1. Просмотр логов службы:
journalctl -u <имя_сервиса>
2. Просмотр системных логов с конца:
journalctl -e
3. Просмотр логов для текущей сессии:
journalctl -b
4. Просмотр логов ядра:
journalctl -k
Другие полезные команды:
1. Получить статус загрузки:
systemctl is-system-running
2. Перевести систему в однопользовательский режим (rescue mode):
systemctl rescue
3. Перевести систему в режим восстановления (emergency mode):
systemctl emergency
Описание формата юнит-файлов:
Юнит-файлы обычно хранятся в /etc/systemd/system/ или /lib/systemd/system/.
- [Unit] — Определяет общие атрибуты юнита, такие как описание и зависимости.
- [Service] — Конфигурация для сервисов, например, что запускать (`ExecStart=`) и как управлять процессом.
- [Install] — Настройки для включения или отключения юнита при загрузке.
Пример юнит-файла:
[Unit]
Description=Пример сервиса
After=network.target
[Service]
ExecStart=/usr/bin/пример-программы
Restart=on-failure
[Install]
WantedBy=multi-user.target
👍2
Пример Bash-скрипта, который выполняет следующие задачи
1. Проверяет доступность важного веб-сервера.
2. Проверяет использование дискового пространства.
3. Делает бэкап указанных директорий.
4. Отправляет отчет на электронную почту администратора.
Пример скрипта:
Описание:
1. Проверка веб-сервера: Используется команда
2. Проверка дискового пространства: С помощью
3. Создание бэкапа: Команда
4. Отправка отчета: Отчет по всем операциям отправляется на почту администратора с помощью
Как использовать:
1. Задайте нужные параметры, такие как адрес веб-сервера, директории для бэкапа, порог использования диска и email.
2. Сделайте скрипт исполняемым:
3. Добавьте скрипт в cron для выполнения на регулярной основе:
Пример для выполнения каждый день в 00:00:
1. Проверяет доступность важного веб-сервера.
2. Проверяет использование дискового пространства.
3. Делает бэкап указанных директорий.
4. Отправляет отчет на электронную почту администратора.
Пример скрипта:
#!/bin/bash
# Установки
WEB_SERVER="https://example.com"
BACKUP_DIR="/backup"
TARGET_DIRS="/var/www /etc"
DISK_USAGE_THRESHOLD=90
ADMIN_EMAIL="[email protected]"
DATE=$(date +"%Y-%m-%d")
BACKUP_FILE="$BACKUP_DIR/backup-$DATE.tar.gz"
# Проверка доступности веб-сервера
echo "Проверка доступности веб-сервера..."
if curl -s --head $WEB_SERVER | grep "200 OK" > /dev/null; then
echo "Веб-сервер доступен."
else
echo "Внимание: Веб-сервер недоступен!" | mail -s "Проблема с веб-сервером" $ADMIN_EMAIL
fi
# Проверка дискового пространства
echo "Проверка дискового пространства..."
DISK_USAGE=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')
if [ $DISK_USAGE -gt $DISK_USAGE_THRESHOLD ]; then
echo "Внимание: Использование дискового пространства превысило $DISK_USAGE_THRESHOLD%!" | mail -s "Проблема с дисковым пространством" $ADMIN_EMAIL
else
echo "Дискового пространства достаточно."
fi
# Создание бэкапа
echo "Создание бэкапа..."
tar -czf $BACKUP_FILE $TARGET_DIRS
if [ $? -eq 0 ]; then
echo "Бэкап успешно создан: $BACKUP_FILE"
else
echo "Ошибка создания бэкапа!" | mail -s "Ошибка создания бэкапа" $ADMIN_EMAIL
fi
# Отправка отчета
echo "Отправка отчета на $ADMIN_EMAIL..."
REPORT="Отчет за $DATE\n\n"
REPORT+="Статус веб-сервера: $(curl -s --head $WEB_SERVER | head -n 1)\n"
REPORT+="Использование дискового пространства: $DISK_USAGE%\n"
REPORT+="Расположение бэкапа: $BACKUP_FILE\n"
echo -e $REPORT | mail -s "Ежедневный отчет системы" $ADMIN_EMAIL
echo "Готово."
Описание:
1. Проверка веб-сервера: Используется команда
curl
, чтобы проверить, доступен ли сайт.2. Проверка дискового пространства: С помощью
df
и awk
проверяется использование диска. Если превышен порог (90%), отправляется уведомление.3. Создание бэкапа: Команда
tar
архивирует и сжимает директории, которые указаны в переменной TARGET_DIRS
.4. Отправка отчета: Отчет по всем операциям отправляется на почту администратора с помощью
mail
.Как использовать:
1. Задайте нужные параметры, такие как адрес веб-сервера, директории для бэкапа, порог использования диска и email.
2. Сделайте скрипт исполняемым:
chmod +x /path/to/your/script.sh
3. Добавьте скрипт в cron для выполнения на регулярной основе:
crontab -e
Пример для выполнения каждый день в 00:00:
0 0 * * * /path/to/your/script.sh
👍3
Производительность RDP в Windows Server и способы ее повышения
Эта статья актуальна для Windows Server 2019 в качестве сервера и Windows 10 в качестве клиента RDP. В статье мы рассмотрим шаги, которые следует предпринять для достижения максимальной производительности терминальных сессий RDP в Windows Server.
https://telegra.ph/Proizvoditelnost-RDP-v-Windows-Server-i-sposoby-ee-povysheniya-09-23
Эта статья актуальна для Windows Server 2019 в качестве сервера и Windows 10 в качестве клиента RDP. В статье мы рассмотрим шаги, которые следует предпринять для достижения максимальной производительности терминальных сессий RDP в Windows Server.
https://telegra.ph/Proizvoditelnost-RDP-v-Windows-Server-i-sposoby-ee-povysheniya-09-23
👍3
Основы мониторинга (обзор Prometheus и Grafana)
Мониторинг сегодня – фактически обязательная «часть программы» для компании любых размеров. В данной статье мы попробуем разобраться в многообразии программного обеспечения для мониторинга и рассмотрим подробнее одно из популярных решений – систему на основе Prometheus и Grafana
https://habr.com/ru/post/709204/
Мониторинг сегодня – фактически обязательная «часть программы» для компании любых размеров. В данной статье мы попробуем разобраться в многообразии программного обеспечения для мониторинга и рассмотрим подробнее одно из популярных решений – систему на основе Prometheus и Grafana
https://habr.com/ru/post/709204/
👍2
Ioping
Константин Хлебников разработал полезную утилиту ioping, позволяющую в стиле утилиты ping наблюдать за изменением отзывчивости системы ввода/вывода в Linux.
Установка в Debian 11
Поддерживаемые ОС
GNU/Linux, GNU/HURD, Windows, OS X, FreeBSD, DragonFlyBSD, OpenBSD
Пример выполнения:
https://github.com/koct9i/ioping
Константин Хлебников разработал полезную утилиту ioping, позволяющую в стиле утилиты ping наблюдать за изменением отзывчивости системы ввода/вывода в Linux.
Установка в Debian 11
# apt install ioping
Поддерживаемые ОС
GNU/Linux, GNU/HURD, Windows, OS X, FreeBSD, DragonFlyBSD, OpenBSD
Пример выполнения:
$ ioping /home
4096 bytes from /home (ext4 /dev/sda5): request=1 time=0.4 ms
4096 bytes from /home (ext4 /dev/sda5): request=2 time=0.8 ms
4096 bytes from /home (ext4 /dev/sda5): request=3 time=0.9 ms
4096 bytes from /home (ext4 /dev/sda5): request=4 time=0.3 ms
4096 bytes from /home (ext4 /dev/sda5): request=5 time=0.2 ms
--- . ioping statistics ---
5 requests completed in 4266.5 ms
min/avg/max/mdev = 0.2/0.5/0.9/0.1 ms
https://github.com/koct9i/ioping
GitHub
GitHub - koct9i/ioping: simple disk I/0 latency measuring tool
simple disk I/0 latency measuring tool. Contribute to koct9i/ioping development by creating an account on GitHub.
👍2
📌Совет по Linux
Если вы хотите определить, сколько времени займет выполнение определенной команды или скрипта, используйте команду time.
Вот синтаксис:
Пример:
Он также показывает использование системных ресурсов процесса, что делает его полезным инструментом для оценки эффективности конкретной команды.
Если вы хотите определить, сколько времени займет выполнение определенной команды или скрипта, используйте команду time.
Вот синтаксис:
$ time <команда>.
Пример:
$ time find / -perm -u=s -type f &>/dev/null
Он также показывает использование системных ресурсов процесса, что делает его полезным инструментом для оценки эффективности конкретной команды.
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Как фильтровать вывод предыдущей команды и зачем нужен pipe
Bash удобен тем, что позволяет передавать результаты одной команды в другую. Для этого используется символ
Простой пример: нужно отфильтровать вывод лога nginx, чтобы отобразить только запросы к конкретному URL. Сначала используем команду
|
Bash удобен тем, что позволяет передавать результаты одной команды в другую. Для этого используется символ
|
(pipe, канал, или конвейер).Простой пример: нужно отфильтровать вывод лога nginx, чтобы отобразить только запросы к конкретному URL. Сначала используем команду
cat
для вывода содержимого файла, затем фильтруем нужные строки с помощью grep
.cat access.log | grep api/users
cat access.log | grep 02/Dec
cat access.log | grep api | grep 172.17.0.1
👍1