Найти в Дзене
dog — DNS-запросы без тонны технического мусора
dig — стандарт для DNS. Но его вывод... Это помесь из служебной информации, в котором утопает главное — ответ на ваш вопрос. dog делает то же самое, но выдаёт результат как нормальную программу: цветной, структурированный, с группировкой и без лишнего шума. Базовое использование: dog google.com Вывод разбит на секции (цветные, с отступами): - ANSWER — то, что вы искали (IP-адреса) - AUTHORITY — кто авторитетен для этого домена - ADDITIONAL — доп. информация (например, IP авторитетных DNS-серверов) Вариант 1 (Запросить конкретный тип записи): dog google.com MX # почтовые серверы dog google...
4 дня назад
duf — анализ дисков, который не напрягает глаза
Вы наверняка знаете df -h. Но давайте честно: его вывод — серое полотно, в котором глаза цепляются за проценты, а колонки разъезжаются, если подключено много устройств. duf — это df, который сделали нормальные люди. Таблицы, цвета, сортировка, фильтрация и даже JSON для скриптов. Базовое использование: duf Вы увидите: - все разделы, смонтированные устройства, Docker-тома (если есть) - колонки: размер, использовано, свободно, процент, точка монтирования - цветовую индикацию: зелёный — норма, жёлтый — близко к заполнению, красный — опасно Вариант 1 (Показать только реальные диски, исключить...
1 неделю назад
entr — запускаем команды при изменении файлов
Ситуация: вы пишете код. Каждые 30 секунд переключаетесь в терминал, нажимаете Ctrl+C, стрелку вверх, Enter, чтобы перезапустить тесты или пересобрать проект. Рутина раздражает. entr — это утилита, которая следит за файлами и запускает команду при любом изменении. Пересохранили файл — entr сам перезапустил тесты, перекомпилировал проект или перезагрузил сервер. Базовое использование: # Перезапускать тесты при изменении любого .py файла find . -name "*.py" | entr pytest # Следить за конкретным файлом echo app.py | entr python app.py Вариант 1 (Автоматический перезапуск веб-сервера при разработке): echo app...
1 неделю назад
tree — показать структуру папок красиво
Ситуация: вы пришли в новый проект. Внутри — 50 папок и 200 файлов. Как понять, что где лежит? ls -la покажет список, но не даст представления о вложенности. find . вывалит простыню. tree выводит структуру файлов и папок в виде дерева. С первого взгляда видно, какие папки внутри каких лежат, где глубина, где пустота. Базовое использование: # Показать дерево текущей папки tree # Показать дерево конкретной папки tree /home/user/project Пример вывода: . ├── app.py ├── config │ ├── settings.py │ └── logging.conf ├── requirements.txt ├── static │ ├── css │ │ └── style.css │ └── js │ └── main...
2 недели назад
zoxide — cd, который запоминает ваши привычки
Ситуация: вы работаете в трёх-четырёх проектах одновременно. Пути к ним выглядят примерно так: /home/user/projects/backend/api/src, /home/user/work/legacy/2024/frontend, /home/user/labs/experiments/rust/cool-tool. Каждый раз вводить полный путь или даже жать Tab несколько раз — утомительно. zoxide — это cd, который запоминает, куда вы ходили, и позволяет переходить по короткому фрагменту имени. Чем чаще вы посещаете папку и чем недавнее это было, тем выше её рейтинг. ➤ Базовое использование: Вместо: cd /home/user/projects/backend/api/src Пишете: z api zoxide сам найдёт папку, содержащую api в имени, и перейдёт туда...
3 недели назад
Скрипт, который не ломается на втором запуске
Бывало такое: запускаете скрипт настройки сервера, а он орёт «пакет уже установлен» и падает? Или молча дублирует конфиги, а потом всё едет? Идемпотентность - это когда повторяете одно и то же действие много раз, а результат не меняется. Как выключатель: щёлкайте сколько угодно - свет либо включится, либо выключится. Без дыма и искр. ➤ Три функции, которые спасут ваши нервы Кладёте в начало любого скрипта - и спите спокойно: #!/bin/bash set -euo pipefail # Ставим пакет, только если его нет ensure_pkg() { dpkg -s "$1" &>/dev/null && { echo "$1 уже стоит"; return 0; } echo "Ставим $1..." apt-get...
3 недели назад
screen — терминальный долгожитель, который не бросает дела при отвале SSH
Ситуация: вы зашли на сервер по SSH, запустили миграцию базы данных, которая идёт 40 минут. Закрыли ноутбук, пошли домой. Пришли утром — миграция оборвалась посередине, потому что SSH-сессия разорвалась, когда ноутбук уснул. Знакомо? screen решает эту проблему. Это терминальный мультиплексор, который держит сессию на сервере независимо от вашего подключения. Потеряли интернет? Закрыли ноутбук? Ребутнули локальную машину? Сессия на сервере продолжает жить. Базовые команды: # Создать новую сессию (имя присвоится автоматически) screen # Создать сессию с именем (рекомендую) screen -S deploy #...
4 недели назад
mtr - диагностика сети, которая показывает правду
Ситуация: сайт не открывается или работает медленно. ping говорит, что хост доступен. traceroute показывает маршрут, но не даёт понять, где именно проблема. Что делать? mtr (My TraceRoute) объединяет ping и traceroute в одной утилите. Она показывает каждый узел на пути к серверу и статистику по потерям пакетов и задержкам на каждом из них. В реальном времени. Базовый запуск: mtr google.com Запускается интерактивный интерфейс, который обновляется в реальном времени. Вариант 1 (Запуск в режиме отчёта): mtr -r -c 100 google.com -r - режим отчёта (без интерактива), -c 100 - 100 пакетов. На выходе - готовая статистика для анализа или отправки провайдеру...
1 месяц назад
Коллеги, всех приветствую
! Помните пост про сайт? Рассказывал о планах, демонстрировал проделанную работу. Обещал делиться. Сделал даже больше, чем планировал. Коротко: сайт практически готов. Код написан, тесты проходят, большая часть функций уже работает. Что реализовано: статьи и гайды, регистрация и комментарии с модерацией, категории (Linux, DevOps, Python, Bash, Сети и другие), популярное в сайдбаре, тёмная тема, адаптив под телефоны, красивые ссылки, карта сайта, безопасность (CSRF, защита от частых запросов, санитизация и др.), всё под 152-ФЗ. В общем, полноценный блог. Работы ещё немало, но основное уже сделано...
1 месяц назад
ncdu - визуальный анализ того, куда делось место
Ситуация: сервер ругается, что диск заполнен на 95%. Вы запускаете df -h, видите, что корень почти полный. Дальше начинаются танцы с du -sh */ - приходится долбиться в каждую папку, спускаться глубже, терять нить, забываать, где были. ncdu (NCurses Disk Usage) делает то же самое, но с интерактивным интерфейсом, где можно ходить стрелками и сразу видеть всё дерево папок. Как это работает: Запускаем ncdu / - утилита сканирует директорию (от 10 секунд до пары минут, в зависимости от объёма) и показывает список папок и файлов, отсортированный по размеру. Навигация внутри ncdu: - Стрелки вверх/вниз...
1 месяц назад
strace - смотрим, что процесс делает на самом деле
Бывает, процесс висит, жрёт CPU, но не падает. Логи молчат. Что делать? Танцы с бубном? Нет. Есть strace - утилита, которая показывает все системные вызовы процесса. В Linux любая программа постоянно общается с ядром: читает файлы, пишет в сокеты, выделяет память. strace перехватывает этот диалог и показывает его вам. ➤ Вариант 1 (Прицепиться к работающему процессу): процесс завис, но не умирает. # Прицепиться к PID 1234 strace -p 1234 # Вывод: # read(3, 0x7f8a2c000000, 4096) = -1 ETIMEDOUT (Connection timed out) # Наглядно: процесс ждёт ответа от какого-то файлового дескриптора 3 ➤ Вариант 2 (Запустить программу под strace): нужно понять, почему падает при запуске...
1 месяц назад
lsof - кто держит порт и открыл тот файл
Ситуация: пытаетесь запустить сервер, а он падает с "Address already in use". Порт занят, но кем? Или пытаетесь удалить файл, а система пишет "file is in use". Кто его держит? lsof (List Open Files) отвечает на оба вопроса. В Linux «всё есть файл» - сетевые сокеты, пайпы, устройства, обычные файлы. lsof показывает, какие процессы какие «файлы» открыли. Вариант 1 (Кто занял порт): классический кейс с запуском сервера. # Кто слушает 3000 порт? lsof -i :3000 # Вывод: COMMAND PID USER FD NAME # node 1234 user 23u IPv4 TCP *:3000 (LISTEN) Вариант 2 (Какой процесс держит файл): не даёт удалить папку или файл...
1 месяц назад