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

Автор: @energy_it

Реклама на бирже: https://telega.in/c/linux_ready
Download Telegram
Что же выведет консоль?
Anonymous Quiz
33%
A
14%
B
19%
C
33%
D
👍11🔥98
Как гарантировать, что скрипт или команда не запустится дважды?

Часто cron запускается повторно, деплой стартует дважды, скрипт пересекается сам с собой.

PID-файлы — ненадёжны.
Проверки через ps — гонки.

В Linux есть решение — flock.
Запустить команду, только если она ещё не выполняется:
flock -n /tmp/deploy.lock deploy.sh


Если блокировка занят, flock завершится с ошибкой, команда не стартует.

Для скриптов ещё надёжнее:
exec 9>>/tmp/job.lock
flock -n 9 || exit 1


С этого момента гарантированно: только один экземпляр, блокировка снимается автоматически при exit.

🔥 flock — это advisory-блокировка ядра с атомарной установкой, а не договорённость скриптов. Используйте её для cron, деплоя, миграций, бэкапов и CI-шагов.

🚪 Linux Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥96🤝1
Как быстро и безопасно работать с большими файлами в Linux!

Большие логи, дампы, CSV, JSON, бэкапы — с ними сталкиваются почти все. Неправильная работа с такими файлами часто приводит к зависаниям терминала, высокой нагрузке и потере времени.

Быстрый просмотр начала файла:
head -n 50 huge.log


Просмотр конца файла (самый частый кейс для логов):
tail -n 50 huge.log


Постраничный просмотр без загрузки файла в память:
less huge.log


Полезные режимы:
-F — выход, если файл помещается на экран
-S — без переноса строк
+F — режим tail -f (follow)


Поиск по огромному файлу с ограничением результатов:
grep -n -m 10 "ERROR" huge.log


Подсчёт количества строк:
wc -l huge.log


Читает файл последовательно и обычно быстрее любых текстовых редакторов.

Быстрое извлечение диапазона строк:
sed -n '100000,100200p' huge.log


Разделение большого файла на части:
split -l 500000 huge.log part_


Полезно для передачи, обработки или параллельного анализа.

Обработка с индикатором прогресса:
pv huge.log | grep "ERROR" > errors.log


pv показывает скорость и объём обработки (утилита может быть не установлена по умолчанию).

Безопасное массовое изменение содержимого:
sed 's/old_value/new_value/g' huge.log > huge.log.new && mv huge.log.new huge.log


Изменение через временный файл — надёжнее, чем sed -i, особенно для больших файлов.

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

🚪 Linux Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥158🤝6👍5😁1
👩‍💻 Работа с путями и символическими ссылками!

В шпоре собраны ключевые утилиты для анализа и нормализации путей: разрешение символических ссылок, получение канонических и абсолютных путей, создание и удаление symlink, а также разбор путей на компоненты. Практический минимум для shell-скриптов, DevOps-задач и системного администрирования.

🚪 Linux Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19👍97🤝3
🧐 На Хабре вышла интересная статья про автоматизацию tmux-окружения с помощью скриптов.

В этой статье:
• Научитесь запускать tmux-сессии в фоне и управлять ими из bash-скрипта;
• Автоматически поднимете несколько окон и панелей с нужными командами;
• Разберётесь с new-session, new-window, split-window и send-keys для сценариев «всё готово за один запуск»;
• Соберёте удобный шаблон, который можно адаптировать под разработку, мониторинг или отладку.

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


🚪 Linux Ready | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥87
Проверка активных DNS-серверов!

Определим, какие DNS-резолверы использует система, проверим их доступность и сравним задержку ответов при разрешении домена.

Показать текущие DNS-серверы в systemd-resolved (основной современный способ):
resolvectl status


Вывод показывает DNS-серверы по интерфейсам, текущий активный резолвер (Current DNS Server) и список upstream DNS (DNS Servers).

Посмотреть, что указано в resolv.conf:
grep -E "^nameserver" /etc/resolv.conf


Важно: в системах с systemd-resolved файл часто содержит локальный stub-адрес 127.0.0.53, поэтому не отражает настоящие upstream DNS.

Замерить задержку ответа конкретного DNS-сервера при резолве домена:
dig @1.1.1.1 example.com +stats | grep "Query time"
dig @8.8.8.8 example.com +stats | grep "Query time"


Формат результата:
;; Query time: XX msec


Задержка зависит от сети, маршрута и кэша. Для объективной оценки рекомендуется выполнять серию запросов и учитывать влияние кэширования, DNSSEC, VPN/Split-DNS и search-доменов.

Проверка базовой работоспособности резолвинга:
nslookup example.com


Если возвращается IP-адрес — в целом разрешение имён работает.

🔥 Понимание активных DNS-серверов — базовый шаг диагностики сети, особенно когда доступ по IP есть, но доменные имена не разрешаются.

🚪 Linux Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍128🤝7
Знали, что «битый» YAML-файл может уронить весь CI/CD пайплайн еще до того, как начнется деплой?

Лишний пробел или неверный отступ в манифестах Kubernetes или Ansible это классическая причина падений. Чтобы не тратить время на запуск тяжелых пайплайнов ради проверки синтаксиса, стоит использовать легковесные утилиты для локальной валидации.

Самый быстрый способ проверить файл без установки лишнего софта — встроенные возможности Python:
python3 -c 'import yaml, sys; yaml.safe_load(sys.stdin)' < deployment.yaml


Если файл валиден, команда ничего не выведет, если есть ошибка, то ты получишь точную строку и номер символа.

Для продвинутой проверки с учетом лучших практик используй специализированный линтер:
yamllint -d relaxed config.yaml


Это подсветит не только ошибки синтаксиса, но и нарушение стилистики (слишком длинные строки, лишние пробелы в конце).

Добавь проверку в pre-commit хук своего репозитория, чтобы ошибки вообще не попадали в Git:
- repo: https://github.com/adrienverge/yamllint.git
rev: v1.33.0
hooks:
- id: yamllint


🔥 Маленькая проверка на входе экономит десятки минут ожидания «красного» пайплайна в GitLab или GitHub.

🚪 Linux Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
14🔥9👍7
🔥18👍8🤝7
Как мгновенно откатить ошибочную команду в shell!

Запустил команду и сомневаешься, что она делает? Повтори последнюю команду без выполнения, просто выведи её:
!!:p


!! — последняя команда из истории, :p — print only.

Хочешь, чтобы при повторе команда сначала появлялась в терминале для проверки, а не исполнялась сразу?
shopt -s histverify


Теперь при вводе:
!!


🔥 Команда вставится в строку, но не выполнится, пока не нажмёшь Enter. Если увидел, что это не то — просто редактируй или отменяй.

🚪 Linux Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍168🔥8
День рождения Линуса Торвальдса: создателю Linux и Git исполнилось 56 лет!

Сегодня, 28 декабря, мир IT отмечает день рождения Линуса Бенедикта Торвальдса. Он родился в 1969 году в Хельсинки и начал программировать в 11 лет на Commodore VIC-20.

В 1991 году Линус выпустил ядро Linux, ставшее основой серверов, Android и тысяч embedded-систем. В 2005 году создал Git, который появился как быстрый инструмент для разработки самого Linux и за считанные годы стал стандартом индустрии.

@linux_ready
2🔥5324👍16👎2
📂 Напоминалка по DNS!

Например, когда домен вводится в браузере, он сначала проверяет кеш, если IP не найден — запускается цепочка DNS-запросов: Root - TLD - Authoritative сервер. В итоге браузер получает IP и только после этого отправляет HTTP-запрос на сервер.

На картинке — наглядная схема того, как именно работает DNS-резолв шаг за шагом.

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

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

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

В Linux есть способ bind-mount:
sudo mount --bind /tmp/empty /var/www/html


Каталог /var/www/html становится пустым, но файлы остаются на диске, просто скрыты другим бинд-моунтом.

Процессы с уже открытыми файлами (FD) продолжат работать с ними, а новые обращения увидят пустой каталог.

Чтобы вернуть всё обратно:
sudo umount /var/www/html


Если umount блокируется процессами в пути, используйте umount -l (lazy) или предварительно проверьте, что держит каталог.

🔥 mount --bind - быстрый переключатель состояния для тестов, A/B конфигураций и временных экспериментов в проде с минимальным риском для данных на диске.

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

Например, DNS переводит домены в IP-адреса, HTTPS отвечает за безопасное соединение с сайтами и API, а SSH позволяет безопасно подключаться к серверам.

На картинке — сетевые сервисы, их протоколы и стандартные порты, которые постоянно встречаются в backend, DevOps и инфраструктурной работе.

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

🚪 Linux Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥10🤝65👎2
🎄 Линуксоиды. Всех с наступающим новым 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