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

Cотрудничество: @energy_c
Download Telegram
📂 Напоминалка по наиболее часто используемым командам Linux!

Например, ls показывает файлы в директории, ps и top помогают понять, какие процессы сейчас работают, а df и du — быстро проверить использование диска.

На картинке — часто используемые команды, которые стоит держать под рукой.

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

🚪 Linux Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝23👍11❤9
Работа с curl в Linux!

curl — универсальный инструмент для работы с HTTP/HTTPS и другими протоколами. Используется для скачивания файлов, проверки API, диагностики сетевых проблем и автоматизации.

Скачивание файла:
curl -O https://example.com/file.tar.gz


-O — сохранить файл с оригинальным именем.

Скачивание с указанием имени:
curl -o app.tar.gz https://example.com/build/latest.tar.gz


Полезно для артефактов сборки и CI.

Скачивание с докачкой:
curl -C - -O https://example.com/bigfile.iso


Продолжает загрузку с места обрыва, если сервер поддерживает Range.

Просмотр HTTP-заголовков:
curl -I https://example.com


Показывает статус-код, Content-Type, Content-Length, cache-заголовки.

Подробный вывод для диагностики:
curl -v https://example.com


Отображает TLS-рукопожатие, запрос и ответ — полезно при сетевых проблемах.

GET-запрос с параметрами:
curl "https://api.example.com/items?limit=10&offset=0"


POST-запрос с JSON:
curl -X POST https://api.example.com/items \
-H "Content-Type: application/json" \
-d '{"name":"test","enabled":true}'


Передача файла (multipart/form-data):
curl -F "file=@backup.tar.gz" https://upload.example.com


Используется для загрузки файлов в сервисы и хранилища.

🔥 curl работает на уровне протокола и не интерпретирует формат передаваемых данных; явно задавайте метод, когда важно избежать автоповедение.

🚪 Linux Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22❤9🔥9
👍 Нашел на Хабре статью, которая многим может пригодиться: «Работа с внешними устройствами в Linux»!

В этой статье:
• Пошагово разбирается, как Linux работает с дисками, флешками, USB-устройствами и внешними носителями через терминал;
• Понятно объясняется логика /dev и /sys, почему устройства могут вести себя по-разному;
• На примерах показано, как монтировать, форматировать, диагностировать устройства и не ломать систему лишними действиями.


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


🚪 Linux Ready | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥10🤝8❤2
👩‍💻 Диагностика портов и сервисов!

В этом посте — базовые инструменты для анализа сетевых портов и сервисов. Рассмотрены команды для просмотра слушающих сокетов, проверки доступности TCP-портов, сопоставления портов с процессами и выполнения сетевого сканирования. Подходит для эксплуатации, отладки и оперативной диагностики.

🚪 Linux Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥18❤9
📂 Напоминалка как работает Docker!

Например, docker build собирает образ из Dockerfile, docker run запускает контейнер, а docker push отправляет образ в реестр.

На картинке — базовая схема работы Docker: клиент, демон, образы, контейнеры и реестр образов.

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

🚪 Linux Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21❤9🔥9
❤12👍8🤝7
Что же выведет консоль?
Anonymous Quiz
38%
A
27%
B
25%
C
10%
D
❤15👍12🤝7🔥1
📂 Базовые Readline-шорткаты для bash!

Например, Ctrl + A переносит курсор в начало строки, а Ctrl + R запускает инкрементальный поиск по истории команд.

На картинке — полезные сочетания клавиш для быстрой навигации и редактирования команд в терминале.

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

🚪 Linux Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24❤9🤝8
Открываешь файл и получаешь к нему доступ не по имени, а по номеру дескриптора!

Bash сам выделяет свободный файловый дескриптор и кладёт его номер в переменную:
echo "start script" >&$FD


Теперь можно писать диагностические сообщения напрямую в файл через выделенный FD, не повторяя >>debug.log у каждой команды.:
some_command
another_command
echo "done" >&$FD


Основные команды продолжают писать в stdout/stderr (терминал), а служебный вывод уходит в debug.log:
exec {FD}>&-


FD закрывается явно => файл корректно закрыт, без утечек.

🔥 Выделенные файловые дескрипторы в bash позволяют аккуратно разделять основной вывод и служебные логи внутри одного скрипта.

🚪 Linux Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤10🔥8😁1
📂 Напоминалка по типам сервисов в Kubernetes!

ClusterIP даёт доступ к Pod’ам только внутри кластера, NodePort открывает фиксированный порт на каждом узле, LoadBalancer публикует сервис через внешний балансировщик, а ExternalName мапит сервис на внешний домен для интеграции с внешними ресурсами.

Сохрани, чтобы не путаться при настройке экспозиции сервисов в K8s!

🚪 Linux Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥7🤝6❤1
Перенаправление потоков и pipe!

Процесс в Unix обычно имеет три стандартных дескриптора:
0 — stdin, 1 — stdout, 2 — stderr.

Shell не обрабатывает вывод — он до запуска команды переназначает, к каким объектам привязаны дескрипторы (терминал, файл, pipe). Поэтому процесс стартует уже с изменённой таблицей дескрипторов.

Базовый случай — перенаправление stdout в файл:
echo "test" > file.txt


Оператор > открывает файл с перезаписью (truncate). Если нужно дописывать данные в конец, используется >>:
echo "line" >> file.txt


Важно помнить, что > по умолчанию влияет только на stdout (fd 1).
Для stderr используется дескриптор 2:
command 2> error.log


Так можно разделить обычный вывод и ошибки в разные файлы:
command > out.log 2> error.log


Поскольку stdout и stderr — независимые дескрипторы, их можно направить в один файл:
command > all.log 2>&1


2>&1 означает: направить stderr туда же, куда в этот момент направлен stdout.

Редиректы применяются слева направо, поэтому порядок критичен:
command > all.log 2>&1   # оба потока в файл
command 2>&1 > all.log # stderr останется в терминале


Это именно копирование назначения дескриптора, а не абстрактное объединение потоков.

stdin (fd 0) тоже можно переназначить:
sort < input.txt


В этом случае файл становится источником данных для процесса.

Оператор | создаёт pipe — канал между процессами: stdout левой команды подключается к stdin правой.
grep 500 access.log | wc -l


Через pipe передаётся только stdout. Если нужно передать и stderr, его сначала перенаправляют в stdout:
make 2>&1 | tee build.log


Shell также позволяет работать с дополнительными дескрипторами, что удобно в скриптах:
exec 3> debug.log
echo "debug info" >&3
exec 3>&-


В этом контексте exec изменяет дескрипторы текущего shell-процесса, позволяя организовать отдельные каналы вывода.

🔥 Основные принципы просты: редиректы настраиваются до запуска, применяются слева направо; 2>&1 копирует stdout, pipe соединяет stdout одной команды со stdin другой.

🚪 Linux Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21❤12🔥7🤝2
📂 SSH Remote Port Forwarding — краткая памятка!

Например, ssh -R используется для публикации локальных сервисов через удалённый SSH-сервер.

На изображении показано: базовый синтаксис ssh -R, отличие short и long form, маршрут трафика через SSH-туннель, влияние параметра GatewayPorts на стороне сервера

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

🚪 Linux Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤11🤝9
Прямое сетевое соединение из Bash без сетевых утилит!

В bash есть возможность открывать TCP/UDP-соединения через путь /dev/tcp/host/port. Это не реальный файл, а спец-путь, который интерпретируется самим bash (сетевые редиректы).

Открываем сокет к серверу и получаем файловый дескриптор:
exec 3<>/dev/tcp/example.com/80


Теперь можно отправлять данные напрямую, как в обычный файл:
printf "GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n" >&3


И читать ответ сервера без curl, nc и telnet (чтение завершится, когда сервер закроет соединение):
cat <&3


Работает именно в bash (не в sh/dash/busybox ash) и при включённой поддержке сетевых редиректов.

🔥 Это удобно на урезанных системах, контейнерах и rescue-окружениях, где нет сетевых утилит, но есть bash.

🚪 Linux Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤8🔥8🤝2
This media is not supported in your browser
VIEW IN TELEGRAM
❤️ Linux Command Library — большая база команд!

Это удобный справочник по командам Linux с разбивкой по категориям: файлы, сеть, процессы, пользователи, Git, SSH, пакетные менеджеры и многое другое. Подходит как для начинающих, так и для тех, кто работает в терминале постоянно и хочет иметь под рукой удобную шпаргалку.

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

🚪 Linux Ready | #сайт
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥13🤝6❤1😁1
Разбираемся с поиском файлов по содержимому!

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

Рекурсивный поиск в текущей папке:
grep -r "search_text" .


Команда пройдёт по всем подпапкам и покажет совпадения с именем файла и строкой.

-r — ищет рекурсивно, не заходя в символические ссылки;
-R — тоже рекурсивно, но идёт по symlink’ам, поэтому можно случайно улететь в лишние каталоги или циклы;

Показать только файлы, где есть совпадения:
grep -rl "search_text" .


Выведет просто список файлов без самих строк.

Без учёта регистра:
grep -ril "search_text" .


Найдёт и Text, и TEXT, и text.

Искать только в файлах нужного типа:
grep -r --include="*.conf" "search_text" /etc


Полезно, когда знаешь, что нужное лежит, например, только в конфигах.

Исключить лишние системные каталоги:
grep -r --exclude-dir=proc --exclude-dir=sys --exclude-dir=dev --exclude-dir=run "search_text" /


Если искать по всей системе, без этого можно получить тонну мусора.

Если раздражают ошибки доступа — можно добавить в конец:
2>/dev/null


Поиск по имени файла + содержимому (через find):
find /var/www -type f -name "*.php" -exec grep -nH "search_text" {} +


Сначала выбираются нужные файлы, потом проверяется их содержимое.

-H — показывает имя файла
-n — номер строки
{} + — обрабатывает файлы пачками (обычно быстрее)

Вариант через xargs:
find /var/www -type f -name "*.php" -print0 | xargs -0 grep -nH "search_text"


Нормально работает с пробелами в именах файлов и тоже быстрый на больших объёмах.

🔥 Эти приёмы позволяют быстро находить конфиги, секреты в тестовых средах, точки использования API и любые текстовые данные в системе или проекте.

🚪 Linux Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤10🔥8
☕️ Нашёл годную статью на Хабре: «Как работает DNS в Linux. Часть 1: от getaddrinfo до resolv.conf»!

В этой статье:
• По шагам разобран путь запроса, от вызова функции в приложении до ответа DNS-сервера;
• Показано, как участвуют glibc, NSS, /etc/hosts, nsswitch.conf и resolv.conf;
• Объясняется, почему один и тот же домен может резолвиться по-разному в разных программах.


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


🚪 Linux Ready | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21❤9🤝7👍2
Как писать логи и не портить пайплайны?

Так создаёшь независимый канал вывода, который не конфликтует с обычным stdout и stderr. Скрипт продолжает вести себя чисто снаружи, а логи работают корректно.

Теперь логирование становится явным и контролируемым, сам решаешь, что писать в лог:
echo "start job" >&3


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

Ошибки можно направлять в лог точечно, не меняя глобальную логику вывода:
some_command 2>&3


stdout команды остаётся доступным дальше, а stderr фиксируется для диагностики.

В конце корректно закрываем файловый дескриптор:
exec 3>&-


🔥 Так лог гарантированно сбрасывается и не держит файл открытым дольше, чем нужно.

🚪 Linux Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥9🤝8😁1