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

Автор: @energy_it

Реклама на бирже: https://telega.in/c/linux_ready
Download Telegram
🎄 Линуксоиды. Всех с наступающим новым 2026 годом!

Этому каналу всего полгода, спасибо каждому за поддержку. Цель на новый год: набрать более 25 тысяч подписчиков ✍️. И желаю каждому выполнить все свои цели.
Please open Telegram to view this post
VIEW IN TELEGRAM
745👍22🔥14🤝2
Открываем ISO-образы в Linux без распаковки!

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

Монтирование в режиме только для чтения:
sudo mkdir -p /mnt/iso
sudo mount -o loop,ro image.iso /mnt/iso


Проверка монтирования и просмотр содержимого:
findmnt /mnt/iso
ls /mnt/iso


Копирование файлов с сохранением доступных в образе атрибутов:
cp -a /mnt/iso ~/iso-copy/


Сохранение прав, симлинков и расширенных атрибутов зависит от наличия поддержки Rock Ridge/Joliet в самом ISO. Ключ -a копирует только те метаданные, которые реально присутствуют и доступны.

Размонтирование:
cd ~
sudo umount /mnt/iso


Shell-функция для частого использования с автоматической очисткой:
mountiso() {
local dir
dir=$(sudo mktemp -d /tmp/iso-XXXXXX)
sudo mount -o loop,ro "$1" "$dir" && cd "$dir"
echo "Для размонтирования выполните: sudo umount $dir && sudo rmdir $dir"
}


Вызов:
mountiso ./ubuntu-24.04.iso


🔥 Образ подключается в ro и остаётся неизменным. В контейнерах нужны CAP_SYS_ADMIN и доступ к /dev/loop* или запуск с --privileged.

🚪 Linux Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1915🤝7
👍18🔥13🤝83
Как узнать, какие shared-библиотеки фактически использует процесс?

Хочешь понять, какие .so библиотеки реально загружены в память процесса, без ldd, lsof и сторонних утилит?
sudo grep "\.so" /proc/1234/maps


/proc/<PID>/maps показывает фактические file-backed mmap’ы, включая ELF shared objects.

Нужно убедиться, что приложение использует именно нужную версию библиотеки?
grep "/lib/x86_64-linux-gnu/libssl.so" /proc/1234/maps


Можно быстро увидеть, не была ли библиотека подменена или загружена через окружение:
grep "LD_PRELOAD=" /proc/1234/environ


🔥 maps отражает что уже загружено в память в момент проверки. Если либы нет — она ещё не загружена или может подгрузиться позже через dlopen().

🚪 Linux Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
16🔥11👍10
📂 Шпаргалка по SSH-туннелям через bastion-хост!

Например, ssh -L открывает локальный порт и направляет трафик через SSH на удалённый сервис, а подключение через bastion даёт безопасный доступ к сервисам в приватной сети без public IP.

На картинке — варианты port forwarding, плюс схема, как трафик идёт от SSH-клиента к внутреннему веб-серверу.

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

🚪 Linux Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
14🔥12👍9
Проверим, что именно подставит shell в *.log!

Включаем режим, чтобы при отсутствии совпадений маска не оставалась строкой *.log:
shopt -s nullglob


Печатаем точный список аргументов, которые реально подставятся (включая пробелы и спецсимволы):
printf '%q\n' -- *.log


%q выводит имя так, как его безопасно повторить в shell.

Возвращаем настройку обратно, чтобы не менять поведение интерактивной сессии:
shopt -u nullglob


🔥 Так проверяем ровно то, что передастся в команду, без ls (который форматирует вывод) и без пайпов, которые ломаются на пробелах/переводах строк.

🚪 Linux Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
13🔥8👍7🤝2👎1
This media is not supported in your browser
VIEW IN TELEGRAM
💡 The Art of Command Line — приёмы для работы в терминале!

Этот репозиторий включает лучшие практики и команды для Linux/macOS терминала. Здесь собраны приемы, комбинации CLI-утилит, практики, которые помогают работать быстрее, искать ошибки, обрабатывать данные и автоматизировать рутинные задачи. Отличный ресурс, чтобы повысить эффективность работы.

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


🚪 Linux Ready | #репозиторий
Please open Telegram to view this post
VIEW IN TELEGRAM
👍139🔥7
Как быстро поднять HTTP-шаринг директории одной командой!

В Linux можно за секунду превратить любую папку в HTTP-файлообменник, встроенным модулем Python. Помогает, когда нужно быстро передать файлы в сети или проверить статику фронта.

Нужен список файлов в браузере с автоматической навигацией? Он уже там:
cd /path/to/share
python3 -m http.server 8080


Если хотите, чтобы сервер слушал только localhost (без риска открыть доступ в сеть):
python3 -m http.server 8080 --bind 127.0.0.1


Нужно запустить и получить PID одной строкой?
python3 -m http.server 8080 & echo $!


Хотите скачать всю директорию одной командой на другой машине?
wget -r -np -nH --cut-dirs=1 http://HOST:8080/


🔥 Рекурсивно, без выхода за пределы папки и без лишних путей.

🚪 Linux Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥127
📂 Напоминалка по загрузке системы!

Например, BIOS/UEFI запускает проверку железа (POST) и ищет устройства, GRUB загружает ядро, а systemd поднимает сервисы и готовит систему к логину.

На картинке — 8 этапов boot-процесса, которые стоит держать под рукой, чтобы быстро понимать, где искать проблему при отладке или настройке сервера.

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

🚪 Linux Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1910🔥8
Генерация SSH-ключей в Linux!

SSH-ключи применяются для аутентификации на серверах, в Git, CI/CD и автоматизации.

Создание Ed25519 (предпочтительный алгоритм):
ssh-keygen -t ed25519 -a 64 -C "dev@host" -f ~/.ssh/id_ed25519


Создание RSA 4096 (для совместимости со средами без поддержки Ed25519):
ssh-keygen -t rsa -b 4096 -C "dev@host" -f ~/.ssh/id_rsa


Просмотр файлов и проверка отпечатка публичного ключа:
ls -l ~/.ssh/
ssh-keygen -l -f ~/.ssh/id_ed25519.pub


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

Копирование публичного ключа на сервер (рекомендуемый способ):
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server


Ручное добавление ключа на сервере (если ssh-copy-id недоступен):
install -m 700 -d ~user/.ssh
printf '%s\n' "ВАШ_PUBLIC_KEY" >> ~user/.ssh/authorized_keys
chmod 600 ~user/.ssh/authorized_keys
chown -R user:user ~user/.ssh


Важно: authorized_keys должен находиться в ~user/.ssh/ на сервере, содержать один ключ на строку, а также иметь корректные права и владельца.

Проверка входа по ключу:
ssh -i ~/.ssh/id_ed25519 user@server


Запуск SSH-агента в текущей сессии и добавление приватного ключа:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519


Агент, запущенный через eval, действует временно для текущего шелла.

Корректные права доступа:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub


🔥 Рабочие ключи следует создавать с passphrase (приватный ключ хранится на диске в зашифрованном виде) и загружать в SSH-агент или системный keyring, чтобы не вводить passphrase при каждом подключении.

🚪 Linux Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
16👍11🔥8
This media is not supported in your browser
VIEW IN TELEGRAM
💡 UsingTheTerminal — подробное руководство по Ubuntu!

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

📌 Оставляю ссылочку: help.ubuntu.com

🚪 Linux Ready | #сайт
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥8🤝7
Запись и воспроизведение терминальной сессии!

Иногда нужно показать, как ты что-то делал в терминале: отладку, деплой, последовательность команд.

Linux умеет записывать терминал как сессию, включая тайминги:
script -t 2> timing.log session.log


После этого делаем все что нужно.

Завершаем запись обычным выходом:
exit


Теперь можно проиграть сессию с теми же паузами:
scriptreplay timing.log session.log


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

🚪 Linux Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24🤝87
👍 На Хабре недавно вышла крайне полезная статья: «Строим свой остров, как создать минимальный Linux для Raspberry Pi»

В этой статье:
• Изучите отличия между Linux для PC и Linux для встраиваемых систем;
• Настроите окружение и соберёте собственное минимальное ядро Linux без Buildroot и Yocto;
• Научитесь кросс-компилировать ядро и собирать образ SD-карты для Raspberry Pi 3 и 4;
• Поймёте, как создаётся полноценная система;


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


🚪 Linux Ready | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥97
Как быстро передавать файлы между серверами через tar-поток по SSH!

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

Push каталога на удалённый сервер:
tar -cf - ./my-folder | ssh user@server "tar -C /home/user -xf -"


Метод потоковый — файлы не копятся в RAM целиком, запись сразу в указанную директорию.

Сжатие в момент передачи:
tar -czf - ./my-folder | ssh user@server "tar -C /home/user -xzf -"


Сжатие экономит трафик и может ускорить перенос, но на слабом или загруженном CPU иногда замедляет.

Мониторинг прогресса (не меняет поток):
tar -cf - ./big-data | pv | ssh user@server "tar -C /data -xf -"


pv просто показывает скорость, объём и ETA. Без него всё работает так же, но без визуального прогресса.

Pull каталога к себе:
ssh user@server "tar -C /data -cf - ./remote-folder" | tar -C ./target -xf -


Удобно для забора бэкапов, артефактов сборки и выгрузки данных со служебных серверов.

Флаги для миграций, где важны права, владельцы, ACL и xattrs (обычно под root):
-p --same-owner --numeric-owner --acls --xattrs


Владельцы и расширенные атрибуты применятся только при достаточных правах у пользователя.

🔥 Нет промежуточных архивов на диске; Для инкрементальных копий лучше rsync; Для изоляции раздела можно добавить --one-file-system

🚪 Linux Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍9🤝6🔥3
📂 Напоминалка по SSH и сетям!

Например, ssh -D 1080 user@server поднимает локальный SOCKS-прокси и позволяет пускать трафик приложений через SSH-сервер.

На картинке — наглядно показано, как работает SSH Dynamic Port Forwarding: локальный порт, SSH-туннель и проброс трафика к конечным адресам.

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

🚪 Linux Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝12👍98🔥5
Нужно быстро понять, есть ли в директории файлы, содержащие определённый текст?

Для этого подходит рекурсивный grep:
grep -Pri "Search_Term" /path/to/dir


Опции означают:
-P — поддержка PCRE (удобно для сложных шаблонов);
-r — рекурсивный обход директорий;
-i — поиск без учёта регистра.

Если важны только сами файлы, а не строки:
grep -Pril "Search_Term" /path/to/dir


-l выводит только имена файлов с совпадениями, идеально для быстрой проверки.

Чтобы не ловить мусор из бинарных файлов:
grep -Pri --binary-files=without-match "Search_Term" /path/to/dir


🔥 Для быстрых проверок grep -r — самый прямой путь.
Но если поиск становится сложнее (фильтрация по имени, размеру, дате, типу), комбинируйте find и grep: это даёт полный контроль над поиском и масштабируется лучше.

🚪 Linux Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍139🔥7
😁278🔥7🤝1
Работа с архивами tar в Linux!

tar — инструмент для упаковки и распаковки данных. Часто используется для бэкапов, доставки артефактов, упаковки проектов и обмена данными между серверами.

Создание архива с gzip-сжатием:
tar -czvf archive.tar.gz /path/to/data


Создание архива с zstd-сжатием (нужен GNU tar с поддержкой --zstd и установленный zstd):
tar --zstd -cvf archive.tar.zst /path/to/data


Основные ключи:
c — create
x — extract
t — list
z — gzip
v — verbose
f — файл/поток
-C — директория
--zstd — zstd


Просмотр содержимого без извлечения:
tar -tzvf archive.tar.gz
tar --zstd -tvf archive.tar.zst


Проверка целостности (проверяется поток сжатия, не структура tar):
gzip -t archive.tar.gz
zstd -t archive.tar.zst


Извлечение архива:
tar -xzvf archive.tar.gz -C /tmp/extract/
tar -xzvf archive.tar.gz path/inside/archive/file.conf


Инкрементальный архив (GNU tar):
tar -czvf backup.tar.gz -g snapshot.file /path/to/data


snapshot.file нужно переиспользовать между запусками.

Потоковая передача по SSH (без промежуточного файла):
tar -czf - /data | ssh user@server "tar -xzf - -C /srv/data"


🔥 tar по умолчанию сохраняет права доступа, владельца/группу, mtime и симлинки; ACL и xattrs требуют явных опций (--acls, --xattrs).

🚪 Linux Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
14👍12🤝7
This media is not supported in your browser
VIEW IN TELEGRAM
❤️ ArchWiki — супер информативный справочник!

Это огромная база знаний про то, как работает Linux: загрузка системы, systemd, сеть, файловые системы, драйверы, безопасность и оптимизация. Статьи написаны точно и понятно, каждый раздел объясняет почему и как всё устроено. Даже если ты не используешь Arch, сайт объясняет общие принципы Linux, которые применимы в большинстве дистрибутивов.

📌 Оставляю ссылочку: wiki.archlinux.org

🚪 Linux Ready | #сайт
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥9🤝8👎1
Как за одну команду узнать, что висит на занятом порту?

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

lsof показывает PID и бинарь, использующий указанный порт:
sudo lsof -i :8080


Самый быстрый способ вычислить, какой процесс слушает TCP/UDP на нужном порту.

ss даёт тот же результат, но компактнее:
ss -tulpn | grep 8080


Хороший вариант, если lsof не установлен.

fuser выводит только PID, что удобно для последующего kill:
sudo fuser 8080/tcp


🔥 Также можешь добавить алиас, чтобы проверять любой порт одной командой:
alias port=‘sudo lsof -i :$1’

🚪 Linux Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥76
😁26👍12🤝7