Linux Ready | DevOps
10.8K subscribers
1.01K photos
73 videos
530 links
Авторский канал по разработке на Linux.
Ресурсы, обучения, задачи, шпаргалки.
Ежедневно информация пополняется!

Cотрудничество: @energy_c
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
❤️ Linux SysOps Handbook — руководство по системному администрированию Linux!

Здесь собраны команды, инструкции и примеры по управлению процессами и пользователями, правам доступа, Bash и SSH, systemd и cron, логам и мониторингу, сетям, дискам и диагностике системы. Отдельно разобрана работа с ps, systemctl, journalctl, nmcli, apt, yum, LVM и другими системными инструментами. Полезный справочник для изучения Linux и работы с серверами.

Оставляю ссылочку: GitHub 📱


🚪 Linux Ready | #репозиторий
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥9🤝5❤2
📂 Напоминалка для работы с Vim!

Например, i включает режим вставки текста, dd удаляет текущую строку, а :wq сохраняет изменения и закрывает редактор.

На картинке — основные режимы и самые нужные команды Vim для навигации, редактирования, поиска, сохранения и выхода.

Сохрани, чтобы не потерять!

🚪 Linux Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤11🔥8👎1
Отслеживаем изменения файлов через inotifywait!

При диагностике приложения, деплоя или скрипта полезно видеть файловую активность в реальном времени: создание, изменение, удаление и перемещение файлов. В Linux такие события можно отслеживать через inotify, а из командной строки — с помощью inotifywait.

В Debian и Ubuntu утилита устанавливается из стандартных репозиториев:
sudo apt update && sudo apt install -y inotify-tools


Запустим непрерывное наблюдение за каталогом. Параметр -m (--monitor) оставляет процесс активным после получения события:
inotifywait -m /var/www/app


События выводятся по мере их получения от ядра:
/var/www/app/ MODIFY config.json
/var/www/app/ CREATE cache.tmp
/var/www/app/ DELETE cache.tmp


Для наблюдения за всем деревом каталогов добавим -r (--recursive):
inotifywait -m -r /var/www/app


Параметр -e позволяет оставить только нужные события. move включает события перемещения из наблюдаемого каталога и в него:
inotifywait -m -r \
-e create,modify,delete,move \
/var/www/app


Для диагностики удобнее выводить время, тип события и путь объекта:
inotifywait -m -r \
--timefmt '%H:%M:%S' \
--format '%T %e %w%f' \
/var/www/app


При использовании абсолютного пути %w%f формирует полный путь к объекту:
14:32:07 MODIFY /var/www/app/config.json
14:32:11 MOVED_TO /var/www/app/releases/current


Следует учитывать, что одно действие приложения может породить несколько событий inotify, а рекурсивное наблюдение создаёт отдельные watches для дерева каталогов. Текущий системный лимит можно проверить через sysctl:
sysctl fs.inotify.max_user_watches


🔥 inotify фиксирует события файловой системы, но не сообщает PID процесса, который инициировал изменение. Если требуется определить конкретный процесс или пользователя, следует использовать механизмы аудита, например auditd.

🚪 Linux Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥7❤6
✍️ Свежая и очень интересная статья на Хабре: «Как проверить, что бэкап действительно можно восстановить»!

В этой статье:
• Узнаете, почему даже регулярно создаваемые бэкапы могут оказаться бесполезными в критический момент;
• Разберёте проверку целостности, тестовое восстановление и мониторинг резервных копий;
• Посмотрите, как правильно проверять бэкапы файлов и баз данных PostgreSQL и MySQL.

🔊 Продолжай читать на Habr!


🚪 Linux Ready | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍11🔥7👎1
Знали, что в Git можно одновременно работать с несколькими ветками без постоянного переключения между ними?

Обычно при переключении между задачами приходится сохранять изменения, менять ветку и возвращаться обратно.

git worktree создаёт дополнительную рабочую копию репозитория, которая использует тот же .git:
git worktree add ../feature-login feature/login


Теперь рядом находятся два независимых каталога:
project/
project-feature-login/


В одном можно продолжать разработку, а во втором открыть срочный hotfix:
git worktree add ../hotfix main


Каждая директория имеет собственное состояние файлов, но использует общую историю, объекты и ветки Git.

Посмотреть все активные рабочие каталоги:
git worktree list


После завершения задачи дополнительную копию можно удалить:
git worktree remove ../hotfix


🔥 git worktree избавляет от постоянного сохранения временных изменений и переключения между ветками. Полезно, когда одновременно ведутся несколько задач или нужно срочно исправить баг.

🚪 Linux Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥8❤7
👩‍💻 Переносим каталог на другой диск без изменения путей через bind mount!

Когда системный диск заканчивается, данные приложения можно перенести на другое хранилище, сохранив прежний путь для сервисов и скриптов. Bind mount позволяет сделать это средствами Linux без symlink и изменений в конфигурации приложения.

В этом посте:
• Переносим данные через rsync с сохранением ACL, xattrs и hard links;

• Переключаем каталог на новое хранилище через mount --bind;

• Проверяем фактическую точку монтирования с помощью findmnt;

• Закрепляем bind mount в /etc/fstab после перезагрузки.


Bind mount отделяет путь, с которым работает приложение, от физического расположения данных — удобный приём для миграции каталогов между дисками и файловыми системами.

🚪 Linux Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥8🤝4❤3
📂 Напоминалка по iptables (netfilter)!

Например, цепочка INPUT обрабатывает пакеты, предназначенные локальной машине, FORWARD — транзитный трафик, а через PREROUTING и POSTROUTING удобно понимать, где выполняется NAT.

На картинке — основные таблицы и цепочки iptables, маршруты входящих, исходящих и транзитных пакетов, а также примеры SSH, DNAT и MASQUERADE.

Сохрани, чтобы не потерять!

🚪 Linux Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍10❤9
📂 Шпаргалка по процессу загрузки Linux!

Например, BIOS/UEFI инициализирует оборудование, загрузчик GRUB запускает ядро, а systemd поднимает системные сервисы и переводит систему в нужный target.

На картинке — основные этапы загрузки: BIOS/UEFI, GRUB, ядро, systemd, уровни загрузки, важные системные файлы, параметры ядра, полезные команды и типичные проблемы при запуске системы.

Сохрани, чтобы не потерять!

🚪 Linux Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15🤝9👍7🔥2
Знали, что git diff умеет сравнивать вообще любые файлы и каталоги — даже если они никогда не находились в Git?

Для этого есть малоиспользуемый режим --no-index:
git diff --no-index ./release-old ./release-new


Git рекурсивно сравнит два каталога и покажет привычный цветной diff с именами файлов и изменёнными строками. Репозиторий для этого не нужен.

Это удобно при разборе двух распакованных сборок, сгенерированных конфигураций или результатов работы программы:
git diff --no-index \
/tmp/output-before \
/tmp/output-after


Можно использовать и для отдельных файлов:
git diff --no-index nginx.conf.old nginx.conf.new


Есть важная деталь для скриптов: при найденных различиях команда завершается с кодом 1, а при полном совпадении — 0. Поэтому 1 здесь не означает обычную ошибку выполнения.
git diff --no-index old/ new/
echo $?


🔥 Если нужен diff двух произвольных каталогов, возможно, привычный интерфейс Git уже умеет именно то, что нужно.

🚪 Linux Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍8🤝3
📂 Напоминалка по модели OSI и передаче данных!

Например, на транспортном уровне данные превращаются в сегменты, на сетевом — в пакеты, а на канальном — во фреймы.

На картинке наглядно показан весь процесс инкапсуляции и деинкапсуляции данных: какие заголовки добавляются на уровнях L4, L3 и L2, где используются IP- и MAC-адреса, порты TCP/UDP и как устроен Ethernet-фрейм.

Сохрани, чтобы не потерять!

🚪 Linux Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥8🤝5❤2😁1
This media is not supported in your browser
VIEW IN TELEGRAM
😎 Bash-скрипты — подробная шпаргалка по автоматизации задач в Linux!

Здесь разобраны переменные и параметры скриптов, условия, циклы, математические операции, работа с внешними командами, перенаправление потоков и конвейеры. Всё сопровождается примерами кода и пояснениями, поэтому материал пригодится как для изучения Bash с нуля, так и в качестве справочника при написании собственных скриптов.

Оставляю ссылочку: GitHub 📱


🚪 Linux Ready | #репозиторий
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤6🤝5🔥1
SSH-туннели: доступ к закрытым сервисам без VPN!

SSH позволяет не только подключаться к удалённым серверам и выполнять команды. Через него можно создавать защищённые туннели и получать доступ к сервисам, которые недоступны извне. Например, PostgreSQL работает только внутри сервера и доступен только локально:
127.0.0.1:5432


Порт базы данных не открыт наружу, но есть SSH-доступ к серверу. Создаём локальный туннель, который принимает соединения на вашем компьютере и передаёт их через SSH:
ssh -L 5433:localhost:5432 user@server


Теперь приложение на локальном компьютере подключается к базе через созданный порт:
psql -h 127.0.0.1 -p 5433 database


При этом PostgreSQL остаётся закрытым для внешнего мира. Доступ к нему появляется только через SSH-туннель.

Тот же подход работает с любыми TCP-сервисами. Например, можно получить доступ к внутренней панели администратора, которая слушает только на сервере:
ssh -L 8080:localhost:8080 user@server


После создания туннеля сервис доступен локально:
http://localhost:8080


Обратный туннель используется, когда удалённому серверу нужен доступ к сервису, который работает на вашей локальной машине. Например, приложение для разработки запущено на порту 3000:
ssh -R 9000:localhost:3000 user@server


Теперь процесс на сервере может обращаться к вашему локальному приложению через:
localhost:9000


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

Если требуется открыть reverse tunnel не только для localhost, нужно изменить настройки SSH-сервера:
GatewayPorts clientspecified
AllowTcpForwarding yes


SSH также может работать как SOCKS5-прокси и направлять поддерживающие приложения через удалённую машину:
ssh -N -D 1080 user@server


После этого в приложении можно указать SOCKS5-прокси:
localhost:1080


Такой вариант используется для диагностики маршрутизации и проверки доступа к ресурсам из другой сети.

Если туннель используется постоянно, его можно запустить в фоне без открытия интерактивного сеанса:
ssh -fNT -L 5433:localhost:5432 user@server


Параметры команды:
-f  запуск SSH-процесса в фоне
-N не выполнять команды на удалённой машине
-T отключить создание псевдотерминала


Проверить, что локальный порт слушается:
ss -tlnp | grep 5433


Или посмотреть процесс, который использует порт:
lsof -i :5433


Чтобы не писать длинные команды каждый раз, туннели можно описать в стандартном конфигурационном файле SSH:
Host production-db
HostName server.example.com
User deploy
LocalForward 5433 localhost:5432


После этого подключение выполняется короткой командой:
ssh production-db


SSH-туннели не заменяют полноценный VPN, так как работают с конкретными портами и TCP-соединениями. Но для точечного доступа к закрытым сервисам это один из самых быстрых и надёжных инструментов.

🔥 В DevOps они постоянно используются для работы с приватными базами данных, диагностики продакшн окружений, тестирования интеграций и временного доступа без изменения сетевой инфраструктуры.

🚪 Linux Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤11🔥8👎1
👩‍💻 Находим, где тормозит HTTP-запрос!

Медленный API — не всегда проблема бекэнда. Задержка может возникнуть ещё на DNS, TCP или TLS, поэтому одного time curl для диагностики недостаточно.

В этом посте:
• Разбираем HTTP-запрос на отдельные этапы;

• Снимаем встроенные тайминги через curl;

• Считаем время DNS, TCP, TLS и ожидания первого байта;

• Добавляем HTTP-код и IP конечного сервера;

• Определяем, на каком участке появляется основная задержка.


В итоге получаем инструмент для анализа задержек HTTP без дополнительных утилит — полезный для быстрой диагностики API, сервисов и сетевых проблем.

🚪 Linux Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥10🤝3❤1