LinuxCamp | DevOps
Обо мне: C/C++/Linux эксперт. Говорим про разработку, Linux, DevOps, сети и администрирование. Админ (реклама): @XoDefender Чат: @linuxcamp_chat Менеджер: @Spiral_Yuri Биржа: https://telega.in/c/linuxcamp_tg РКН: https://clck.ru/3RWA3C
نمایش بیشتر📈 تحلیل کانال تلگرام LinuxCamp | DevOps
کانال LinuxCamp | DevOps (@linuxcamp_tg) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 13 953 مشترک است و جایگاه 9 144 را در دسته فناوری و برنامهها و رتبه 47 276 را در منطقه روسيا دارد.
📊 شاخصهای مخاطب و پویایی
از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 13 953 مشترک جذب کرده است.
بر اساس آخرین دادهها در تاریخ 07 ژوئیه, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر -101 و در ۲۴ ساعت گذشته برابر -4 بوده و همچنان دسترسی گستردهای حفظ شده است.
- وضعیت تأیید: تأیید نشده
- نرخ تعامل (ER): میانگین تعامل مخاطب 28.39% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 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
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
