ru
Feedback
LinuxCamp | DevOps

LinuxCamp | DevOps

Открыть в Telegram

Обо мне: C/C++/Linux эксперт. Говорим про разработку, Linux, DevOps, сети и администрирование. Админ (реклама): @XoDefender Чат: @linuxcamp_chat Менеджер: @Spiral_Yuri Биржа: https://telega.in/c/linuxcamp_tg РКН: https://clck.ru/3RWA3C

Больше

📈 Аналитический обзор Telegram-канала LinuxCamp | DevOps

Канал LinuxCamp | DevOps (@linuxcamp_tg) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 13 900 подписчиков, занимая 9 149 место в категории Технологии и приложения и 47 358 место в регионе Россия.

📊 Показатели аудитории и динамика

С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 13 900 подписчиков.

Согласно последним данным от 15 июля, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -125, а за последние 24 часа — -4, при этом общий охват остаётся высоким.

  • Статус верификации: Не верифицирован
  • Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 24.78%. В первые 24 часа после публикации контент обычно набирает 12.79% реакций от общего числа подписчиков.
  • Охват публикаций: В среднем каждый пост получает 3 444 просмотров. В течение первых суток публикация набирает 1 778 просмотров.
  • Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 28.
  • Тематические интересы: Контент сосредоточен на ключевых темах, таких как linuxcamp, ядро, linux, диск, docker.

📝 Описание и контентная политика

Автор описывает ресурс как площадку для выражения субъективного мнения:
Обо мне: C/C++/Linux эксперт. Говорим про разработку, Linux, DevOps, сети и администрирование. Админ (реклама): @XoDefender Чат: @linuxcamp_chat Менеджер: @Spiral_Yuri Биржа: https://telega.in/c/linuxcamp_tg РКН: https://clck.ru/3RWA3C

Благодаря высокой частоте обновлений (последние данные получены 16 июля, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.

13 900
Подписчики
-424 часа
-537 дней
-12530 день
Архив постов
🩵 Как я попал в Яндекс и что узнал о собеседованиях в IT 👋 Привет, подписчики канала Кирилла ! Я — Илья Шишков, С++ разрабо
🩵 Как я попал в Яндекс и что узнал о собеседованиях в IT 👋 Привет, подписчики канала Кирилла !
Я — Илья Шишков, С++ разработчик с 20-летним опытом в IT, 11 лет в Яндексе и более 250 проведенных технических интервью. Сейчас работаю в R&D команде СУБД Pangolin в СберТехе. Помню свой первый день в роли интервьюера: я сидел по другую сторону стола, с двумя финалами чемпионата мира по программированию ICPC в резюме, и я понял главное: многие талантливые разработчики проваливают интервью из-за банального незнания правил игры.
...📋 На моем канале вы получите инсайдерскую информацию: 🖇реальные задачи и вопросы с интервью в топовых компаниях 🖇типичные ошибки кандидатов и как их избежать 🖇cекретные техники самопрезентации, которые работают 🖇cтратегии подготовки к собеседованиям всех уровней 🔍 За годы работы я собрал уникальные инсайды, которые помогли десяткам специалистов получить работу мечты. Теперь делюсь не сухой теорией, а реальными историями и практическими советами из первых рук. ✅ Хотите узнать, как на самом деле устроены собеседования в топовых IT-компаниях и многократно увеличить свои шансы на успех? Подписывайтесь на мой канал! Там я регулярно раскрываю секреты, которые обычно остаются за закрытыми дверями технических интервью.

Как разбить файл на части? В некоторых случаях один файл нужно разбить на несколько частей, например, для загрузки либо копирования в случае слишком большого размера. Проще всего это сделать с помощью утилиты split. Команда используется для разбивки файлов по размеру, количеству строк и на определенное количество составных частей. Разбить по размеру Для этого используем опцию "-b", определяющую максимальный размер элемента. За основу возьмем файлик в 721 байт. Его нужно разбить на части по 100 байт. Для удобства зададим префикс имени "file-part_":

$ ls -l
721 Apr 20 13:11 file_orig

$ split -b 100 ./file_orig ./file-part_
Помимо оригинала появятся еще 8 файлов:

$ ls -l
721 Apr 20 13:11 file_orig
100 Apr 20 13:12 file-part_aa
...
21 Apr 20 13:12 file-part_ah
Разбить по количеству строк Может быть нужно разбить один текстовый документ на несколько, с количеством строк "<= n". В этом вопросе полезной окажется опция "-l". Команда поделит большой log-файл на части по 10 тысяч строк в каждом:

$ split -l 1000 ~/Logs/log ~/Logs/log-part_
Разбить на определённое количество файлов Еще одна интересная задача, в решении которой поможет опция "-n". Размер будет, по возможности, поделен поровну. Достаточно прописать итоговое количество файлов и запустить команду:

$ split -n 3 ./file_orig ./file-part_

$ ls -l
240 Apr 20 13:31 file-part_aa
240 Apr 20 13:31 file-part_ab
241 Apr 20 13:31 file-part_ac
721 Apr 20 13:11 file_orig
Настройка имени частей файла Как мы уже поняли, для split префикс определяет название части файла, после чего идет дефолтный суффикс из двух латинских букв. С помощью опций можно изменить его длину "-a", переключиться на числа "-d" или hex-символы "-x". В последних двух сценариях получится выбрать начальную точку отчета "--numeric-suffixes" для чисел и "--hex-suffixes" для hex-символов. Возьмем задачу – разделить текстовый файл на 3 части равного размера, чтобы каждый из них имел префикс "file-part_" и числовой суффикс из одного символа, начиная с 1:

$ split -a 1 --numeric-suffixes=1 -n 3 ./file_orig ./file-part_

$ ls -l
240 Apr 20 13:36 file-part_1
240 Apr 20 13:36 file-part_2
241 Apr 20 13:36 file-part_3
Объединение частей файла Следующий шаг – объединение нескольких частей в единый файл. Для этих целей отлично подойдет утилита cat. Сначала нужно задать имена частей, потом итоговый файл:

$ cat ~/Archive/split-archive.part_* > ~/Archives/cat-archive.tar.gz
LinuxCamp | #utils

Не часто советую учебные курсы, но тут нашел интересную возможность пройти бесплатно вводный курс по DevOps. Он для новичков в этой области (но не новичков в IT). Классно, что есть расширенный чек-лист, который поможет сориентироваться в мире DevOps и понять куда двигаться. И, похоже, на собесах может помочь. А у самой платформы не сотни менторов, а один, он же основатель. Еще увидел у него программу наставничества, формат действительно эффективный. Ну и любопытный телеграм-канал на почитать, там тоже, на мой взгляд, много полезных публикаций.

ArcoLinux прекращает деятельность ArcoLinux — открытая операционная система, разрабатываемая группой бельгийских программисто
ArcoLinux прекращает деятельность ArcoLinux — открытая операционная система, разрабатываемая группой бельгийских программистов на основе ArchLinux. Завершает работу после 8 лет существования. Эрик Дюбуа (создатель) сообщил, что проект прекратит выпуск ISO, приложений и скриптов с 1 июля 2025 года. Уже скоро социальные сети проекта также будут деактивированы. Причины: — Личные причины Эрика Дюбуа: автор не стремится к новым амбициозным планам и хочет замедлить темп жизни. Он планирует заниматься Linux исключительно для удовольствия, без давления, связанного с управлением крупной инициативой — Появление мелких ошибок, влияющих на качество работы, из-за потери концентрации и внимания создателя проекта
Код, видео, документация — все это останется в открытом доступе для изучения, форка или переработки. Я искренне надеюсь, что другие найдут в этом вдохновение, как когда-то нашел я в сообществе
LinuxCamp | #news

👩‍💻 Docker — лучший канал для ускоренного обучения DevOps и Linux. С помощью инфографики, наглядных визуализаций и коротких
+5
👩‍💻 Docker — лучший канал для ускоренного обучения DevOps и Linux. С помощью инфографики, наглядных визуализаций и коротких обучающих видео вам будут доступны все ключевые концепции работы с Docker и методики DevOps. Прокачать скиллы: t.me/DevopsDocker

Релиз Ubuntu 25.04 Plucky Puffin По информации OpenNET, основные изменения и доработки включают: — Рабочий стол обновлён до G
Релиз Ubuntu 25.04 Plucky Puffin По информации OpenNET, основные изменения и доработки включают: — Рабочий стол обновлён до GNOME 48, в котором реализована поддержка HDR, тройной буферизации, стековой компоновки. Добавлены оптимизации потребления памяти и производительности; — Вместо Evince для просмотра PDF задействована программа Papers; — Задействован пакетный менеджер APT 3.0, в котором предложен новый движок разрешения зависимостей Solver3; — Улучшены возможности для использования устройств на базе архитектуры ARM64 в качестве рабочих станций с графическим окружением; — Ядро Linux обновлено до 6.14; — На ноутбуках с GPU NVIDIA по умолчанию включён сервис nvidia‑powerd, обеспечивающий поддержку Dynamic Boost; — Обеспечена полная поддержка GPU Intel на базе архитектуры Xe2; LinuxCamp | #news

Хз, видели ли этот прикол, но иначе же и не скажешь) Как вспомню свои первые дни, ухх... LinuxCamp | #memes

Размонтирование файловой системы: unmount При прекращении работы с диском, чтобы полностью закрыть к нему доступ и избежать п
Размонтирование файловой системы: unmount При прекращении работы с диском, чтобы полностью закрыть к нему доступ и избежать повреждения данных, следует его размонтировать. Для этих целей существует утилита umount. В качестве примера возьмем USB-диск, на который были загружены бэкапы данных. Перед отключением от компьютера его следует размонтировать. Сначала посмотрим полный список доступных дисков:

$ sudo lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT,LABEL
loop0  4K /snap/bare/5
sda 104G                              
├─sda1  vfat 1G /boot/efi                    
├─sda2  ext4 2G /boot                        
...
sdb          500G                              
├─sdb1 ntfs  500G /media/root-user/C2D8...
USB-диск объемом 500 ГБ маркирован как sdb1. Для его размонтирования следует выполнить команду:

$ sudo umount /dev/sdb1
В результате диск отсоединится. Вы можете посмотреть, что он пропал из списка доступных устройств в файловом менеджере. Если диск в настоящий момент занят, то возникнет ошибка. С помощью опции "-l" его получится размонтировать, когда он освободится:

$ sudo umount -l /dev/sdb1
Для принудительного отключения можно использовать флаг "-f". Все выполняемые операции незамедлительно прервутся, и ждать ничего не придется:

$ sudo umount -f /dev/sdb1
Размонтировать все устройства Опция "-a" отвечает за размонтирование всех файловых систем. Eсть несколько разделов с исключениями: rocdevfsdevptssysfsrpc_pipefs и nfsd. Запускать ее нужно с осторожностью:

$ sudo umount -a
Перед выполнением команды вы можете посмотреть то, какие устройства будут затронуты. Тут пригодятся опции "--fake" и "-v" для вывода подробной информации:

$ sudo umount --fake -v -a

/run/user/1000/doc: successfully unmounted
/snap/firefox/6015: successfully unmounted
...
В результате отобразится полный список путей и устройств, которые будут размонтированы. Размонтировать путь Если вы хотите отключить конкретный путь от корневой FS, то подход будет иной. В качестве примера возьмем каталог "/run/lock/tmpfs". Команда для размонтирования будет выглядеть следующим образом:

$ sudo umount /run/lock/tmpfs
Рекурсивное размонтирование Для рекурсивного размонтирования определенной директории, к описанной выше команде следует добавить опцию "-R":

$ sudo umount -R /run/lock/tmpfs
Если же вы хотите получить дополнительную информацию при рекурсивном размонтировании, то воспользуйтесь опцией "-v":

$ sudo umount -R -v /run/lock/tmpfs
LinuxCamp | #utils

⚡️ Все о программировании от экспертов BigTech! Собрались разработчики бигтеха и решили создать крутой канал, на котором прос
⚡️ Все о программировании от экспертов BigTech! Собрались разработчики бигтеха и решили создать крутой канал, на котором простым языком расскажут все о мире IT: — Лучшие практики чистого кода Продвинутые техники и рекомендации по разработкеПодробные разборы вопросов с собеседованийИнтересные факты и новости из мира технологийПолезные open-source утилиты 🌐 Присоединяйся к нам и учись на скоростях: IT CoLibry

docker init: как использовать на Windows Команда "docker init" создает стартовые файлы, связанные с Docker, для вашего проекта == автоматически генерирует их для запуска приложения под ваш стек. Docker init сейчас доступен только на Docker Desktop на Windows и MacOS, в большинстве ОС на linux данной команды нет:
- .dockerignore
- Dockerfile
- compose.yaml
- README.Docker.md
Устанавливаем Docker Desktop на устройство если не установлен. Если не имели раньше дела с питухоном питоном, также скачиваем его. Как все готово, создаем рабочий каталог:

mkdir my-fastapi-project
cd my-fastapi-project
Создаем и активируем виртуальное окружение чтобы изолировать зависимости проекта и с помощью команды pip freeze автоматически сформировать requirements.txt, не заполняя его вручную:

python3 -m venv venv
source venv/bin/activate
Cкачиваем необходимые для создания API зависимости с помощью пакетного менеджера pip и сохраняем их в requirements.txt:

pip install fastapi uvicorn
pip freeze > requirements.txt
Создадим в каталоге проекта файл "main.py" с простым API:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def root():
    return {"Hello": "Docker Init"}
Теперь наконец можем запустить магию:

docker init
Нас встречает приветственное сообщение, которое просит нас выбрать язык проекта (python), его версию (3.12.7), порт на котором будет слушать приложение (8000). Далее нужно вписать команду для запуска. Он увидел что я работаю с fastapi и предлагает:

uvicorn 'main:app' --host=0.0.0.0 --port=8000
И тут видим, что автоматически были созданы перечисленные в начале файлы! Далее можем абсолютно спокойно поднять контейнер командой:

docker compose up --build
Дожидаемся пока сбилдится наше приложение и проверяем все ли ок. Переходим в браузер и видим заветное:
http://127.0.0.1:8000
{"Hello":"Docker Init"}
LinuxCamp | #devops #docker #bymaga #win

Реально же, SIGKILL не контрится) LinuxCamp | #memes
Реально же, SIGKILL не контрится) LinuxCamp | #memes

Из чего состоит Dockerfile Dockerfile - это набор команд, по которым docker собирает образ контейнера. Для начала нужно немного разъяснить, как это работает под капотом. Docker-образ - это как слоеный пирог. Почти каждая инструкция в Dockerfile создает новый слой поверх предыдущих. В одном из предыдущих постов, где мы собирали минимальный образ докера, фигурировал вот такой Dockerfile:

FROM python:3.11-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install -r requirements.txt

COPY . .

CMD ["uvicorn", "main:app", "--host", "127.0.0.1", "--port", "8000"]
Его и разберем построчно: 1) FROM - команда, которая создает базовый образ. В нашем случае это python:3.11-slim. Но что это и откуда берется? - из Docker Hub! То есть мы буквально скачиваем зависимость с официального репозитория образов. В хабе имеются образы на многие технологии, языки, базы данных и фреймворки, так что найти нужную базу под проект не будет проблемой. python:3.11-slim — это официальный образ Python версии 3.11 в минималистичной вариации "slim"; 2) WORKDIR - создает рабочую директорию проекта, в которой все команды будут выполняться. Также как и большинство инструкций, создает новый слой; 3) COPY - копирует файлы с хоста в контейнер. Можно заметить, что данная команда выполняется дважды в файле. Сначала копируется только файл requirements.txt для того, чтобы разделить установку зависимостей и основной код. Это делается ради кэширования слоёв: файл зависимостей меняется редко, и при пересборке будет использоваться уже готовый слой; 4) RUN - выполняет команду внутри контейнера на этапе сборки и создаёт новый слой. В данном случае ставит зависимости из requirements.txt; 5) Ещё один "COPY . ." — теперь закидываем остальной код проекта в контейнер. 6) Последняя инструкция CMD - не создает новый слой, там указаны команды которые выполняются при запуске контейнера. В нашем Dockerfile выполняются команды запуска fastapi-приложения: — "uvicorn" - сервер, который запускает fastapi-приложение — "main:app" - main — это имя файла python, а app — это объект fastapi внутри этого файла. — "--host", "127.0.0.1" - указывает, что сервер будет слушать на локальном интерфейсе. — "--port", "8000" - указывает порт, на котором работает приложение. LinuxCamp | #devops #docker #bymaga

🧩 Соберите свой комплект курсов как пазл! 3 видеокурса на ваш выбор за 55 000₽ Больше не нужно тратить время и деньги на лиш
🧩 Соберите свой комплект курсов как пазл! 3 видеокурса на ваш выбор за 55 000₽ Больше не нужно тратить время и деньги на лишнее — соберите персональный набор курсов под ваши цели и прокачивайте только те навыки, которые действительно нужны.  Собрать свой пазл  ➡️ по ссылке

Удаление файлов старше n дней Пользователи иногда сталкиваются с ситуацией, когда нужно почистить определенный каталог, удалив из него старые файлы, которые давно не используются. Через стандартный GUI проводник это делать не всегда удобно. Через терминал - самое то) Для CLI существует специальная команда find, которая отвечает за поиск файлов. Подробно говорили о ней тут. С помощью опции "-mtime" получится найти только те файлы, дата изменения которых старше заданного временного промежутка. В качестве примера возьмем каталог Downloads и срок в 35 дней:

$ find ~/Downloads -type f -mtime +35
Следующий шаг – непосредственно чистка:

$ find ~/Downloads -type f -mtime +35 -delete
Вам необязательно действовать напрямую и стирать сразу же все файлы. Их можно отсортировать дополнительно по еще одному признаку, например, по названию или расширению. Для этого есть опция "-name":

$ find ~/Downloads -name "*.zip" -type f -mtime +35 -delete
Также, чтобы сгоряча не удалить нужный и недавно используемый файл, можно для каждого элемента вывода выполнить "ls -l" и посмотреть дату последнего изменения ресурса:

$ find ~/Downloads -type f -mtime +5 -exec ls -l {} \;
... Feb 17 17:30 ./file
LinuxCamp | #microhelp #utils

Если часто просматриваешь логи, помни про "tail -f" Команда "tail -f" отображает последние строки файла и продолжает обновлять вывод в реальном времени. Это особенно полезно, когда работаешь с журналами, типа syslog. Утилиты head и tail рассматривали тут. Много раз слышал от людей, что они для дебага какого-то функционала сначала инициировали вывод в syslog, после чего либо через GUI редактор, либо через постоянный вызов tail просматривали логи. Как-то неэффективно... Для решения задач такого типа предлагаю использовать:

$ tail -f /var/log/syslog
Если нужно отображать больше последних строк, чем по дефолту, дописывайте флаг "-n". Когда дополнительно нужно прогнать вывод через фильтр, grep в помощь:

$ tail -n 100 -f /var/log/nginx/access.log

$ tail -f /var/log/nginx/error.log | grep "timeout"
Я помню, как сам мучился с дебагом, когда не был в курсе про этот чудо-флаг) Дело в том, что не все приложения выдают лог в консоль. Если вы работаете с демоном, то у него нет управляющего терминала и все идет в журналы. Как раз тут и было бы весьма удобно использовать "tail -f". LinuxCamp | #microhelp #utils

⚡️ Ты неправильно используешь нейросети! Нет смысла писать в ChatGPT обычные вопросы, пока кто-то с помощью других ИИ получае
+4
⚡️ Ты неправильно используешь нейросети! Нет смысла писать в ChatGPT обычные вопросы, пока кто-то с помощью других ИИ получает себе профессии. Подписывайтесь, тут айтишник делится нейросетями, которые ищет каждый: https://t.me/+J76vZFqMsJBmZGYy

Пацаны/девчата, напоминаю, что у нас есть чат "LinuxCamp | Chat", в котором вы можете задавать вопросы по администрированию, разработке и прочим техническим штукам. Там и я подмогу и другие активисты. Добавил в него бота-модератора, с которым по приятнее должна быть атмосферка)

Как узнать тип сессии: Wayland или Xorg? Многие популярные дистрибутивы уже используют Wayland по умолчанию. Однако у Wayland всё ещё есть проблемы. Многие старые программы не поддерживаются или работают плохо. Если у вас возникли какие-либо проблемы при работе с старыми программами, нужно проверить какой дисплейный сервер вы используете. Есть несколько способов сделать это. Самый простой способ посмотреть какой дисплейный сервер используется в данный момент, это вывести содержимое переменной окружения XDG_SESSION_TYPE:

$ echo $XDG_SESSION_TYPE
wayland
Кроме того, можно узнать тип текущей сессии с помощью loginctl. Для этого нужно сначала вывести список активных сессий через list-sessions:

$ loginctl list-sessions

SESSION  UID    USER      SEAT  TTY  
3      1000    parallels   seat0 tty2 
c1     127       gdm      seat0 tty1 
 
2 sessions listed.
Потом выводим тип конкретной сессии через опцию show-session:

$ loginctl show-session 3 -p Type
Type=wayland
Или можно сделать всё одной командой, получив идентификатор сессии из переменной окружения XDG_SESSION_ID (если определена):

$ loginctl show-session "$XDG_SESSION_ID" -p Type
LinuxCamp | #microhelp #sessions

Где же сидят эти службы? Прежде всего нужно упомянуть, что службы Systemd можно разделить на две категории: 1) системные служ
Где же сидят эти службы? Прежде всего нужно упомянуть, что службы Systemd можно разделить на две категории: 1) системные службы, которые запускаются от суперпользователя. Для управления такими службами нужно использовать sudo. 2) пользовательские службы, которые запускаются от определённого юзера, который имеет над ними полный контроль без необходимости в sudo. Системные службы лежат в: 1) /usr/lib/systemd/system; 2) /lib/systemd/system; 3) /etc/systemd/system; Пользовательские служы лежат в: 1) /usr/lib/systemd/user; 2) /lib/systemd/user; 3) /etc/systemd/user; 4) /home/user/.config/systemd/user; Файлы сервисов, поставляемые с пакетами, как правило, располагаются в каталогах lib и /usr/lib, а в /etc/ расположены модифицированные юниты, переопределяющие стандартные настройки. LinuxCamp | #systemd