gram news
Linux Ready | DevOps channel avatar

Linux Ready | DevOps

@linux_ready

Авторский канал по разработке на Linux. Ресурсы, обучения, задачи, шпаргалки. Ежедневно информация пополняется! Автор: @energy_c Реклама на бирже: https://telega.in/c/linux_ready

ProjectsRUProgramming

10,600subscribers

Open the Channel

Latest posts

  • Linux Ready | DevOps

    22 Sept, 07:30

    GNU mv умеет атомарно менять два файла или каталога местами!Обычно при переключении релиза делают несколько переименований: текущий каталог убирают в сторону, новый ставят на его место. Между этими операциями существует промежуточное состояние.У mv теперь есть --exchange: mv -T --exchange release-new release-currentЕсли оба пути находятся в одной файловой системе и она поддерживает атомарный обмен, mv меняет их местами одной операцией: release-current становится новым релизом, а прежнее содержимое оказывается в release-new.Причём это не только для каталогов: mv --exchange config.new config.confПоменять их обратно можно той же командой: mv --exchange config.new config.confДля сценариев, где нельзя допустить незаметного перехода к копированию между файловыми системами, можно добавить --no-copy: mv -T --exchange --no-copy release-new release-current
    Image from a post by Linux Ready | DevOpsImage from a post by Linux Ready | DevOps
    77515733Open in Telegram
  • Linux Ready | DevOps

    21 Sept, 07:30

    📂 Напоминалка про переадресацию портов (Port Forwarding)!Port Forwarding позволяет принимать соединение на одном адресе и порту и перенаправлять трафик на другой — например, с 127.0.0.1:8080 на 172.17.0.3:80.На картинке показано, чем отличается обычное прямое соединение от переадресации портов, а также два основных подхода: через отдельный процесс в user space и средствами сетевого стека ядра в kernel space.Сохрани, чтобы не потерять!🚪 Linux Ready | #ресурс
    Image from a post by Linux Ready | DevOpsImage from a post by Linux Ready | DevOps
    1,020141032Open in Telegram
  • Linux Ready | DevOps

    18 Sept, 17:12

    Как umask определяет права файлов!Почему новый файл обычно получает 644, каталог — 755, а один и тот же сервис при разных способах запуска может создавать их с другими правами? За этим стоит umask — маска, которая ограничивает разрешения в момент создания объекта. umask umask -Sumask не задаёт итоговые права напрямую. При обычном создании программы часто запрашивают 0666 для файлов и 0777 для каталогов, а маска исключает из запрошенного режима запрещённые биты.Для чистоты эксперимента удалим объекты, если они остались от предыдущего запуска: rm -f example.txt rm -rf example_dirumask 022touch example.txt mkdir example_dirstat -c '%A %a %n' example.txt example_dirПри 022 запись запрещена для группы и остальных, поэтому получаем 644 для файла и 755 для каталога:
    1,2501177Open in Telegram
  • Linux Ready | DevOps

    18 Sept, 07:12

    👩‍💻 Находим, где тормозит HTTP-запрос!Медленный API — не всегда проблема бекэнда. Задержка может возникнуть ещё на DNS, TCP или TLS, поэтому одного time curl для диагностики недостаточно.В этом посте: • Разбираем HTTP-запрос на отдельные этапы;• Снимаем встроенные тайминги через curl;• Считаем время DNS, TCP, TLS и ожидания первого байта;• Добавляем HTTP-код и IP конечного сервера;• Определяем, на каком участке появляется основная задержка.В итоге получаем инструмент для анализа задержек HTTP без дополнительных утилит — полезный для быстрой диагностики API, сервисов и сетевых проблем.🚪 Linux Ready | #задача
    Image from a post by Linux Ready | DevOpsImage from a post by Linux Ready | DevOpsImage from a post by Linux Ready | DevOpsImage from a post by Linux Ready | DevOps
    1,2101675Open in Telegram
  • Linux Ready | DevOps

    17 Sept, 07:12

    Знали, что systemd умеет запускать сервис автоматически при изменении файла?Многие используют cron или пишут циклы с проверкой времени изменения: while true; do check_file sleep 10 doneНо systemd уже имеет встроенный механизм наблюдения за файлами через .path units.Например, можно следить за конфигурацией: [Path] PathChanged=/etc/myapp/config.yml Unit=myapp-reload.serviceТеперь при изменении файла systemd автоматически запустит нужный сервис.Проверить активные path-наблюдатели: systemctl list-paths
    Image from a post by Linux Ready | DevOpsImage from a post by Linux Ready | DevOps
    1,31016762Open in Telegram
  • Linux Ready | DevOps

    16 Sept, 13:12

    В Linux можно удалить файл, но продолжать читать из него или записывать в него данные!Если процесс уже открыл файл, его можно удалить из каталога: exec {LOG}>/tmp/debug.log rm /tmp/debug.logИмя /tmp/debug.log исчезнет, и открыть файл по этому пути уже нельзя. Но Bash продолжает держать открытый файловый дескриптор, поэтому запись работает: printf '%s\n' "debug message" >&"$LOG"Причина в семантике Unix: rm удаляет имя файла из каталога через unlink(), а открытый файловый дескриптор продолжает ссылаться на тот же объект файловой системы.Пока дескриптор открыт, занятое файлом место также не освобождается. Это объясняет распространённую ситуацию, когда огромный лог уже удалили, ls его не показывает, а свободного места на диске не прибавилось.Закрываем последний дескриптор: exec {LOG}>&-Если других ссылок и открытых дескрипторов на этот файл больше нет, файловая система сможет
    Image from a post by Linux Ready | DevOpsImage from a post by Linux Ready | DevOps
    1,330171354Open in Telegram
  • Linux Ready | DevOps

    16 Sept, 11:12

    Хакатон на космических данных. Санкт-Петербург, Красноярск или онлайн из любой точки страны.Стартуем 18 сентября.За выходные участники доводят одну из задач до рабочего решения.Санкт-Петербург. К 2035 году над Землёй должен работать топливный узел, у которого заправляются корабли, и откуда он будет получать топливо - с Земли, с Луны или из резерва - пока не решил никто. Команде предстоит собрать схему поставок, посчитать резервы и решить, во что вкладываться сразу. Призовой фонд 1,2 млн ₽.Красноярск. Спутник видит горящий лес раньше любого наземного поста, но вместе с пожаром ловит нагретые крыши, факелы на месторождениях и блики на воде. Команде предстоит научить сервис отличать настоящий очаг от шума, обвести гарь и выдать площадь в гектарах. Призовой фонд 600 тыс. ₽.Лучшие забирают приз на площадке и билет в московский финал 25–27 сентября, где разыграют ещё 2,4 млн рублей.
    Image from a post by Linux Ready | DevOpsImage from a post by Linux Ready | DevOps
    1,22021Open in Telegram
  • Linux Ready | DevOps

    16 Sept, 09:12

    👩‍💻 Находим, где тормозит HTTP-запрос!Медленный API — не всегда проблема бекэнда. Задержка может возникнуть ещё на DNS, TCP или TLS, поэтому одного time curl для диагностики недостаточно.В этом посте: • Разбираем HTTP-запрос на отдельные этапы;• Снимаем встроенные тайминги через curl;• Считаем время DNS, TCP, TLS и ожидания первого байта;• Добавляем HTTP-код и IP конечного сервера;• Определяем, на каком участке появляется основная задержка.В итоге получаем инструмент для анализа задержек HTTP без дополнительных утилит — полезный для быстрой диагностики API, сервисов и сетевых проблем.🚪 Linux Ready | #задача
    Image from a post by Linux Ready | DevOpsImage from a post by Linux Ready | DevOpsImage from a post by Linux Ready | DevOpsImage from a post by Linux Ready | DevOps
    1,240101031Open in Telegram
  • Linux Ready | DevOps

    15 Sept, 10:00

    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-сервисами. Например, можно получить доступ к внутренней панели администратора, которая слушает только
    1,310201181Open in Telegram
  • Linux Ready | DevOps

    15 Sept, 06:12

    😎 Bash-скрипты — подробная шпаргалка по автоматизации задач в Linux!Здесь разобраны переменные и параметры скриптов, условия, циклы, математические операции, работа с внешними командами, перенаправление потоков и конвейеры. Всё сопровождается примерами кода и пояснениями, поэтому материал пригодится как для изучения Bash с нуля, так и в качестве справочника при написании собственных скриптов.Оставляю ссылочку: GitHub 📱🚪 Linux Ready | #репозиторий
    1,330video16551Open in Telegram
  • Linux Ready | DevOps

    14 Sept, 07:12

    📂 Напоминалка по модели OSI и передаче данных!Например, на транспортном уровне данные превращаются в сегменты, на сетевом — в пакеты, а на канальном — во фреймы.На картинке наглядно показан весь процесс инкапсуляции и деинкапсуляции данных: какие заголовки добавляются на уровнях L4, L3 и L2, где используются IP- и MAC-адреса, порты TCP/UDP и как устроен Ethernet-фрейм.Сохрани, чтобы не потерять!🚪 Linux Ready | #ресурс
    Image from a post by Linux Ready | DevOpsImage from a post by Linux Ready | DevOps
    1,550138521Open in Telegram
  • Linux Ready | DevOps

    13 Sept, 12:10

    Знали, что git diff умеет сравнивать вообще любые файлы и каталоги — даже если они никогда не находились в Git?Для этого есть малоиспользуемый режим --no-index: git diff --no-index ./release-old ./release-newGit рекурсивно сравнит два каталога и покажет привычный цветной 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 двух
    Image from a post by Linux Ready | DevOpsImage from a post by Linux Ready | DevOps
    1,7401183Open in Telegram
  • Linux Ready | DevOps

    13 Sept, 07:12

    📂 Шпаргалка по процессу загрузки Linux!Например, BIOS/UEFI инициализирует оборудование, загрузчик GRUB запускает ядро, а systemd поднимает системные сервисы и переводит систему в нужный target.На картинке — основные этапы загрузки: BIOS/UEFI, GRUB, ядро, systemd, уровни загрузки, важные системные файлы, параметры ядра, полезные команды и типичные проблемы при запуске системы.Сохрани, чтобы не потерять!🚪 Linux Ready | #ресурс
    Image from a post by Linux Ready | DevOpsImage from a post by Linux Ready | DevOps
    1,70015972Open in Telegram
  • Linux Ready | DevOps

    11 Sept, 07:12

    📂 Напоминалка по iptables (netfilter)!Например, цепочка INPUT обрабатывает пакеты, предназначенные локальной машине, FORWARD — транзитный трафик, а через PREROUTING и POSTROUTING удобно понимать, где выполняется NAT.На картинке — основные таблицы и цепочки iptables, маршруты входящих, исходящих и транзитных пакетов, а также примеры SSH, DNAT и MASQUERADE.Сохрани, чтобы не потерять!🚪 Linux Ready | #ресурс
    Image from a post by Linux Ready | DevOpsImage from a post by Linux Ready | DevOps
    1,87017109Open in Telegram
  • Linux Ready | DevOps

    10 Sept, 07:12

    👩‍💻 Переносим каталог на другой диск без изменения путей через bind mount!Когда системный диск заканчивается, данные приложения можно перенести на другое хранилище, сохранив прежний путь для сервисов и скриптов. Bind mount позволяет сделать это средствами Linux без symlink и изменений в конфигурации приложения.В этом посте: • Переносим данные через rsync с сохранением ACL, xattrs и hard links;• Переключаем каталог на новое хранилище через mount --bind;• Проверяем фактическую точку монтирования с помощью findmnt;• Закрепляем bind mount в /etc/fstab после перезагрузки.Bind mount отделяет путь, с которым работает приложение, от физического расположения данных — удобный приём для миграции каталогов между дисками и файловыми системами.🚪 Linux Ready | #гайд
    Image from a post by Linux Ready | DevOpsImage from a post by Linux Ready | DevOpsImage from a post by Linux Ready | DevOpsImage from a post by Linux Ready | DevOps
    1,94019843Open in Telegram
  • Linux Ready | DevOps

    9 Sept, 15:15

    Знали, что в 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После завершения задачи дополнительную копию можно удалить:
    Image from a post by Linux Ready | DevOpsImage from a post by Linux Ready | DevOps
    1,7601187Open in Telegram
  • Linux Ready | DevOps

    9 Sept, 13:12

    Коротко и по работному делу!— Море IT & Digital вакансий на удалёнку — Каждый день — Прямые контакты HRПодписаться на канал 🤘
    Image from a post by Linux Ready | DevOpsImage from a post by Linux Ready | DevOps
  • Linux Ready | DevOps

    9 Sept, 06:12

    ✍️ Свежая и очень интересная статья на Хабре: «Как проверить, что бэкап действительно можно восстановить»!В этой статье: • Узнаете, почему даже регулярно создаваемые бэкапы могут оказаться бесполезными в критический момент; • Разберёте проверку целостности, тестовое восстановление и мониторинг резервных копий; • Посмотрите, как правильно проверять бэкапы файлов и баз данных PostgreSQL и MySQL.🔊 Продолжай читать на Habr!🚪 Linux Ready | #статья
    Image from a post by Linux Ready | DevOpsImage from a post by Linux Ready | DevOps
    1,740111171Open in Telegram
  • Linux Ready | DevOps

    8 Sept, 15:12

    Отслеживаем изменения файлов через 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 включает
    1,6802076Open in Telegram
  • Linux Ready | DevOps

    8 Sept, 13:12

    Сколько вакансий ты упускаешь, пока ищешь работу? 👀 Они разбросаны по десяткам Telegram-каналов, hh ru, карьерным сайтам и другим площадкам. Пока ты мониторишь одни источники, подходящая вакансия может появиться в другом. Софи забирает этот поиск на себя. Она ищет подходящие вакансии в 350+
    Image from a post by Linux Ready | DevOpsImage from a post by Linux Ready | DevOps
    1,03042Open in Telegram