LinuxCamp | DevOps
Обо мне: 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 953 подписчиков, занимая 9 144 место в категории Технологии и приложения и 47 276 место в регионе Россия.
📊 Показатели аудитории и динамика
С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 13 953 подписчиков.
Согласно последним данным от 07 июля, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -101, а за последние 24 часа — -4, при этом общий охват остаётся высоким.
- Статус верификации: Не верифицирован
- Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 28.39%. В первые 24 часа после публикации контент обычно набирает 10.67% реакций от общего числа подписчиков.
- Охват публикаций: В среднем каждый пост получает 3 963 просмотров. В течение первых суток публикация набирает 1 489 просмотров.
- Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 23.
- Тематические интересы: Контент сосредоточен на ключевых темах, таких как linuxcamp, ядро, linux, диск, docker.
📝 Описание и контентная политика
Автор описывает ресурс как площадку для выражения субъективного мнения:
“Обо мне: C/C++/Linux эксперт. Говорим про разработку, Linux, DevOps, сети и администрирование.
Админ (реклама): @XoDefender
Чат: @linuxcamp_chat
Менеджер: @Spiral_Yuri
Биржа: https://telega.in/c/linuxcamp_tg
РКН: https://clck.ru/3RWA3C”
Благодаря высокой частоте обновлений (последние данные получены 08 июля, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.
$ xdg-open http://$(ip --oneline route get 1.1.1.1 | awk '{print $3}')
Команду нужно выполнить после базового подключения к сети. Далее вводишь, что нужно и вуаля, все работает!
LinuxCamp | Chat | #microhelp
<key name="disable-vpn-disconnect-notification" type="b">
<default>false</default>
<summary>...</summary>
<description>...</description>
</key>
2) через get/set вызовы получаем и обновляем данные
g_settings_set_boolean (applet->gsettings, "disable-vpn-disconnect-notification", state);
g_settings_get_boolean (applet->gsettings, "disable-vpn-disconnect-notification");
Если отработал ивент на уведомление, просто определяем его тип и сверяем со значением конкретной настройки.
Если приложение не предоставляет GUI по управлению GSettings, пользователь может работать с ними либо через одноименную CLI утилиту, либо через GUI менеджер dconf-editor:
$ gsettings set org.gnome.nm-applet disable-connected-notifications "true"
$ sudo apt install dconf-editor
После правок, локальный бинарный конфиг, скорее всего, будет лежать в каталоге "~/.config/dconf/":
~/.config/dconf$ ls
user
Если админу нужно указать глобальные настройки для всех пользователей, он может вручную подредактировать схему. Обычно они лежат в "/usr/share/glib-2.0/schemas/":
$ ls /usr/share/glib-2.0/schemas/
org.gnome.desktop.sound.gschema.xml
org.gnome.nm-applet.gschema.xml
org.gnome.desktop.a11y.gschema.xml
После того, как дефолтные параметры изменены, XML нужно обязательно скомпилить, т.к. читается именно бинарное представление. Без этого этапа изменения не будут применены:
$ sudo glib-compile-schemas /usr/share/glib-2.0/schemas/
LinuxCamp | #story
from airflow import DAG
from airflow.operators.bash import BashOperator
from datetime import datetime, timedelta
with DAG(
dag_id="nightly_pipeline",
# стартуем раз в сутки
schedule_interval="0 2 * * *",
start_date=datetime(2025, 4, 1),
# не догоняем пропущенные дни
catchup=False
) as dag:
dump = BashOperator(
task_id="dump_db",
bash_command="/scripts/dump.sh",
retries=2,
retry_delay=timedelta(minutes=10),
# алёрт в чат
on_failure_callback="notify_telegram"
)
transform = BashOperator(
task_id="make_report",
bash_command="/scripts/report.sh"
)
upload = BashOperator(
task_id="upload_s3",
bash_command="/scripts/upload.sh"
)
dump >> transform >> upload
Что меняется на практике:
- Автоматические повторы — достаточно указать retries, и упавшая задача перезапустится без ваших правок в коде скрипта.
- Чёткая картинка процессов — в веб‑интерфейсе видно, что именно сейчас выполняется, что уже зелёное, а что покраснело.
- Уведомления «из коробки» — функция on_failure_callback отправит сообщение в Telegram/Slack, как только что‑то рухнет.
- Sensors и ожидание событий — вместо бесконечных while sleep 30 можно сказать: «ждать, пока файл появится в папке», и Airflow займётся этим сам.
В одном из следующих постов мы поднимем Airflow одной командой через Docker‑Compose и соберём первый «hello world» DAG.
Реальный сценарий задержки
Допустим, дамп БД обычно занимает пять минут. В одну из ночей, из‑за нагрузки, он растягивается до получаса. Если процесс управляется cron’ом, то в 02:05 по расписанию стартует следующий скрипт report.sh, тот читает ещё незаконченный дамп и отправляет пустой отчёт. Ошибку вы заметите только утром.
С Airflow всё иначе: пока задача dump_db не финишировала, зависимый make_report даже не начнётся. Когда дамп завершится успешно, DAG продолжит движение; если же он дважды упадёт подряд, Airflow пометит цепочку как failed и тут же пришлёт вам Telegram‑уведомление со ссылкой на лог.
Cron остаётся отличным будильником для одиночных задач, но когда шагов несколько и они зависят друг от друга, удобнее отдать управление оркестратору. Airflow даёт одну точку правды (DAG), автоматические ретраи, встроенное журналирование и мгновенные алёрты — и всё это пишется на чистом Python, без костылей.
LinuxCamp | Chat | #devops #bymaga
$ sudo apt install mc
$ mc
Экран утилиты разбивается на три части - две панели с файлами (левая и правая) и командная строка, позволяющая вводить команды операционной системы.
Некоторые возможности MC
1) стандартные операции с файлами: просмотр, редактирование, копирование, переименование/перемещение, удаление, изменение прав и т.д.;
2) функции работы с выделенным блоком, поиск/замена, отмена последней операции, цветовое выделение синтаксиса и т.д.;
3) выделение файлов разных типов цветом;
4) нажав Enter на файле архива (.tar, .tgz, .zip, .a, .rpm и т.д.) можно "войти внутрь" него;
5) поиск файлов по шаблону имени и по содержимому;
6) может работать с файлами на удаленных системах посредством FTP и SSH.
Вывод
Утилита очень полезна при проведении работ на серверах, когда нет доступа к GUI. В целом, понимаю, учить эти комбинации клавиш геморно. После vim меня вообще "дергает", когда не вижу понятных кнопок)
Но оно того стоит, ребята. Со временем все начинает получаться "на автомате" и работа идет гораздо быстрее. Поэтому и nano и vim и mc хорошо бы знать.
LinuxCamp | #utils
$ arch
aarch64
Да, это "маковская" история. Aarch64 — это 64-битная архитектура от ARM (иногда её называют arm64).
Есть еще команда uname, которая выводит архитектуру ядра через опцию "-m". Архитектура ядра соответствует системной, поэтому этот метод можно использовать:
$ uname -m
aarch64
Команда file позволяет просматривать информацию о файлах. Для исполняемых отображается их архитектура. Если вы посмотрите архитектуру какого-либо важного системного файла, то узнаете и разрядность системы:
$ file /lib/systemd/systemd
/lib/systemd/systemd: ELF 64-bit LSB pie executable, ARM aarch64, ...
LinuxCamp | #utils
$ ls -l
lrwxrwxrwx ... sftp-server -> openssh/sftp-server
Если будем работать через find, руками тип смотреть не придется. Для фильтрации по символьным ссылкам у нас есть опция "-type l":
$ find /usr/lib -type l
/usr/lib/gvfs/gvfsd-afp
/usr/lib/libmultipath.so
Если мы переживаем, что удалим что-то лишнее, можем проверить путь к файлу, на который указывает ссылка. Для этого нужно для вывода команды выполнить "-exec ls -l {} \":
$ find /usr/lib -type l -exec ls -l {} \;
/usr/lib/gvfs/gvfsd-afp -> ../../libexec/gvfsd-afp
/usr/lib/libmultipath.so -> libmultipath.so.0
Напоследок разберемся с поиском и удалением битых ссылок, которые никуда не ведут. Для такой цели подойдет параметр "-xtype l":
$ find ~/broken_links/ -xtype l
LinuxCamp | #microhelpЯ — Илья Шишков, С++ разработчик с 20-летним опытом в IT, 11 лет в Яндексе и более 250 проведенных технических интервью. Сейчас работаю в R&D команде СУБД Pangolin в СберТехе. Помню свой первый день в роли интервьюера: я сидел по другую сторону стола, с двумя финалами чемпионата мира по программированию ICPC в резюме, и я понял главное: многие талантливые разработчики проваливают интервью из-за банального незнания правил игры....📋 На моем канале вы получите инсайдерскую информацию: 🖇реальные задачи и вопросы с интервью в топовых компаниях 🖇типичные ошибки кандидатов и как их избежать 🖇cекретные техники самопрезентации, которые работают 🖇cтратегии подготовки к собеседованиям всех уровней 🔍 За годы работы я собрал уникальные инсайды, которые помогли десяткам специалистов получить работу мечты. Теперь делюсь не сухой теорией, а реальными историями и практическими советами из первых рук. ✅ Хотите узнать, как на самом деле устроены собеседования в топовых IT-компаниях и многократно увеличить свои шансы на успех? Подписывайтесь на мой канал! Там я регулярно раскрываю секреты, которые обычно остаются за закрытыми дверями технических интервью.
$ 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Код, видео, документация — все это останется в открытом доступе для изучения, форка или переработки. Я искренне надеюсь, что другие найдут в этом вдохновение, как когда-то нашел я в сообществеLinuxCamp | #news
$ 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сть несколько разделов с исключениями: roc, devfs, devpts, sysfs, rpc_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