LinuxCamp | DevOps
Обо мне: C/C++/Linux эксперт. Говорим про разработку, Linux, DevOps, сети и администрирование. Админ (реклама): @XoDefender Чат: @linuxcamp_chat Менеджер: @Spiral_Yuri Биржа: https://telega.in/c/linuxcamp_tg РКН: https://clck.ru/3RWA3C
Ko'proq ko'rsatish📈 Telegram kanali LinuxCamp | DevOps analitikasi
LinuxCamp | DevOps (@linuxcamp_tg) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 13 932 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 9 149-o'rinni va Rossiya mintaqasida 47 289-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 13 932 obunachiga ega bo‘ldi.
08 Iyul, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -100 ga, so‘nggi 24 soatda esa -6 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 28.83% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 11.52% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 4 023 marta ko‘riladi; birinchi sutkada odatda 1 608 ta ko‘rish yig‘iladi.
- Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 23 ta reaksiya keladi.
- Tematik yo‘nalishlar: Kontent linuxcamp, ядро, linux, диск, docker kabi asosiy mavzularga jamlangan.
📝 Tavsif va kontent siyosati
Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
“Обо мне: C/C++/Linux эксперт. Говорим про разработку, Linux, DevOps, сети и администрирование.
Админ (реклама): @XoDefender
Чат: @linuxcamp_chat
Менеджер: @Spiral_Yuri
Биржа: https://telega.in/c/linuxcamp_tg
РКН: https://clck.ru/3RWA3C”
Yuqori yangilanish chastotasi (oxirgi ma’lumot 09 Iyul, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.
$ systemctl status docker
docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Теперь узнаем имя пакета, с которым служба поставляется. Если мы работаем с deb сборками, используем флаг "-S":
$ dpkg -S /lib/systemd/system/docker.service
docker.io: /lib/systemd/system/docker.service
После того, как имя пакета известно, удаляем его:
$ sudo apt remove docker.io
Если вы не хотите удалять пакет, например, потому что он системный и это может что-то сломать, можно замаскировать службу.
Замаскированные службы нельзя запустить вручную и они не активируются на старте системы (даже если добавлены в автозагрузку). Для маскировки используется команда mask:
$ sudo systemctl mask docker
Created symlink /etc/systemd/system/docker.service → /dev/null
Прикольно, конечно, реализована маскировка - в системном каталоге для сервисов создается симлинка на устройство "/dev/null" (говорили о нем тут).
Если посмотрим на состояние службы, увидим, что она замаскирована:
$ sudo systemctl status docker
docker.service
Loaded: masked (Reason: Unit docker.service is masked.)
Для того, чтобы убрать маскировку используем команду unmask. Ссылка удалится и не будет мешать старту сервиса:
$ sudo systemctl unmask docker
Removed /etc/systemd/system/docker.service.
LinuxCamp | #systemd
$ grep -r "root" /etc/
/etc/mdadm/mdadm.conf:MAILADDR root
...
Если хотим подсветить вхождения цветом, используем опцию "--color=always":
$ grep --color=always -r "root" /etc/
Опции "-C, -B, -A" вообще имбовые, использую их целую неделю) Вы можете включить отображение не только текущей строки, в которой было найдено вхождение, но и n строк до/после:
1) -C: выводит n строк до и после вхождения;
$ grep -C2 -r --color=always "Hello3" ./
./hello-Hello1
./hello-Hello2
./hello:Hello3
./hello-Hello4
./hello-Hello5
2) -B: выводит n строк перед вхождением;
$ grep -B2 -r --color=always "Hello3" ./
./hello-Hello1
./hello-Hello2
./hello:Hello3
3) -A: выводит n строк после вхождения;
$ grep -A2 -r --color=always "Hello3" ./
./hello:Hello3
./hello-Hello4
./hello-Hello5
Если наш шаблон поиска походит на регулярное выражения, нужно использовать флаг "-F". Таким образом мы говорим команде искать ровно то, что мы запросили - без скрытых подтекстов.
Без флага мы получим строки, в которых присутствует хотя бы 1 символ из набора (H, e, l, o). С флагом получим строки с буквальным совпадением:
$ grep "[Hello]" hello
Help me please
Helloup
[Hello]
$ grep -F "[Hello]" hello
[Hello]
LinuxCamp | #utils
$ sudo apt install qttools5-dev-tools
$ qdbusviewer
2) dbus-send: низкоуровневый cmd инструмент, который позволяет вручную отправлять запросы к сервисам:
$ sudo apt install dbus
$ dbus-send --system --dest=com.redhat.tuned --type=method_call --print-reply /Tuned com.redhat.tuned.control.active_profile
Подписаться на сигнал через "dbus-send" не получится, для этого нужны утилиты, которые умеют прослушивать сервисы в реальном времени - "dbus-monitor".
3) dbus-monitor: выводит на консоль информацию о сигналах в момент их получения либо о методах в момент вызова:
$ dbus-monitor "type='method_call',interface='org.kde.Solid.PowerManagement'"
Входит в пакет dbus. Хорошо мне подходил для дебага. Я сначала пытался отследить сигнал - если приходит отбивка, значит сервис активен, интерфейс верный и можно переходить к коду.
4) busctl: современный аналог dbus-send, включен в systemd. С помощью утилиты можно вызывать (busctl call) методы и прослушивать (busctl monitor) события. Также можно выводить список узлов на пользовательской и системной шинах:
$ sudo apt install systemd
$ busctl call com.redhat.tuned /Tuned com.redhat.tuned.control active_profile
$ busctl --system monitor "com.redhat.tuned.control" "profile_changed"
$ busctl --user list
$ busctl --system list
LinuxCamp | #utils
$ qdbus org.kde.Solid.PowerManagement /org/kde/Solid/PowerManagement org.kde.Solid.PowerManagement.currentProfile
Полный интерфейс вывести можно вот так:
$ busctl --user introspect org.kde.Solid.PowerManagement /org/kde/Solid/PowerManagement
Приложение tuned позволило более гибко настроить приложуху и отследить профили (balanced, powersave, performance), которые могут выставляться независимо от заряда батареи. Узнать профиль:
dbus-send --system --dest=com.redhat.tuned --type=method_call --print-reply /Tuned com.redhat.tuned.control.active_profile
Вывести полный интерфейс:
$ busctl --system introspect com.redhat.tuned /Tuned
Конечно же для языка C у нас есть либа (libdbus), через которую аналогичную процедуру можно реализовать кодом. Задача еще в работе, поэтому по мере своего продвижения в dbus буду постить полезности.
LinuxCamp | #story
$ passwd
Changing password for vitek
current password:
Enter new password:
Retype new password:
А теперь представим, что за нашей системой работает образный "Васек", который забыл свой пароль. Мы, будучи админом, можем создать для "Васька" новый пароль и пустить его в систему:
$ sudo passwd vasya
New password:
Retype new password:
Все, можем сообщить Васе пароль и пусть пользуется системой:
$ su - vasya
Password:
vasya@ubuntu-desktop:~$
А если мы, как админ, заметили, что у пользователя слабый пароль, то можем принудительно сделать его недействительным и заставить юзера обновить данные при следующей попытке входа. Для этого добавим флаг "-e":
$ sudo passwd -e vasya
$ sudo su - vasya
You are required to change your password immediately...
Changing password for vasya.
Current password:
New password:
Retype new password:
LinuxCamp | #microhelp
$ dirs
~/Web/src /var/www/html /etc/apache2
$ cd /etc/ssl/certs
$ dirs
/etc/ssl/certs /var/www/html /etc/apache2
Команда cd заменила каталог "~/Web/src" на "/etc/ssl/certs". Не волнуйтесь, чтобы все это дело пофиксить, нужно запустить pushd с дефисом:
$ pushd -
~/Web/src /etc/ssl/certs /var/www/html /etc/apache2
Команда работает практически аналогично "cd -": добавляет прошлый активный каталог в стек и переходит на него. Теперь к нам вернется потерянный каталог и сохранится тот, в который мы перешли через cd.
Если мы через cd куда-то перешли, осознали проблему, но менять каталог не хотим, используем pushd дважды. Для удобства еще и alias определим:
$ pushd -
~/Web/src /etc/ssl/certs
$ pushd
/etc/ssl/certs ~/Web/src
alias slurp='pushd - && pushd'
Такой прием, конечно, не поможет, если мы несколько раз через cd походили по разным местам. Тут нужно вовремя раздуплиться, иначе придется вводить полный путь.
LinuxCamp | #shell
$ pushd /var/www/html
/var/www/html ~/Web/src
$ pushd /etc/apache2
/etc/apache2 /var/www/html ~/Web/src
$ pushd /etc/ssl/certs
/etc/ssl/certs /etc/apache2 /var/www/html ~/Web/src
Команда pushd без аргументов меняет местами два верхних каталога в стеке и переходит к новому верхнему. Давайте несколько раз переместимся между "/etc/ssl/certs" и "/etc/apache2":
$ pwd
/etc/ssl/certs
$ pushd
/etc/apache2 /etc/ssl/certs /var/www/html ~/Web/src
$ pushd
/etc/ssl/certs /etc/apache2 /var/www/html ~/Web/src
Что делать, если нужно перейти в другие каталоги стека, помимо двух верхних? pushd и popd принимают целочисленные аргументы для данной задачи. Давайте для наглядности выведем текущий стек в столбец:
$ dirs -v
0 /etc/ssl/certs
1 /etc/apache2
2 /var/www/html
3 ~/Web/src
Команда "pushd +N" сдвигает N каталогов с вершины стека в самый низ, а затем переходит к новому верхнему. Если нужно попасть в "/var/www/html" и сохранить структуру стека, используем:
$ pushd +2
/var/www/html ~/Web/src /etc/ssl/certs /etc/apache2
Отрицательный аргумент (-N) сдвигает каталоги в противоположном направлении. Чтобы перейти к каталогу в нижней части стека, можно либо сдвинуть все, кроме последнего, либо просто использовать "pushd -0":
$ dirs
/etc/apache2 /etc/ssl/certs ~/Web/src /var/www/html
$ pushd -0
/var/www/html /etc/apache2 /etc/ssl/certs ~/Web/src
Можно также удалять каталоги из стека, используя popd с аргументом. Команда "popd +N" удаляет каталог, расположенный на позиции N, из стека. Отрицательный аргумент (-N) означает отсчет снизу. Подсчет начинается с нуля, поэтому "popd +1" удаляет второй каталог сверху:
$ dirs
/var/www/html /etc/apache2 /etc/ssl/certs ~/Web/src
$ popd +1
/var/www/html /etc/ssl/certs ~/Web/src
$ popd +2
/var/www/html /etc/ssl/certs
Будьте аккуратны и внимательны. Если вы используете команду cd, то самый верхний элемент стека затрется на текущий активный каталог. Эту проблему мы научимся решать в пятницу)
LinuxCamp | #shell
/var/www/html
/etc/apache2
/etc/ssl/certs
~/Web/src
Быстро переключаться между ними можно с помощью функции оболочки - "стеком каталогов".
Стек каталогов — это список директорий, которые вы посетили и решили отслеживать в текущем экземпляре оболочки. Изначально он содержит только текущий путь.
Просмотреть стек можно, используя команду dirs:
$ dirs
/etc/ssl/certs /etc/apache2 /var/www/html ~/Web/src
Вывод команды можно напечатать столбцом "-p":
$ dirs -p
/etc/ssl/certs
/etc/apache2
...
А можно и пронумеровать "-v". Это нам позволит вдальнейшем удобнее переключаться между каталогами:
$ dirs -v
0 /etc/ssl/certs
1 /etc/apache2
...
Вы управляете стеком, выполняя две операции: pushing и popping (есть, кста, такой стиль танца - весело выглядит).
Pushing каталога добавляет его в начало списка (вершину стека) и переходит в него:
$ pushd /etc/apache2
/etc/apache2 /var/www/html
Для того, чтобы только добавить каталог в стек и не переходить на него, нужно использовать флаг "-n".
Popping удаляет верхний каталог из стека и возвращает нас на следующий за ним:
$ popd
/var/www/html
Если хотим полностью очистить стек, тогда либо выполняем "dirs -c", либо зовем popd до тех пор, пока не увидим:
$ popd
bash: popd: directory stack empty
Принцип работы со стеком заключается в том, что мы добавляем туда каталоги, после чего прыгаем по ним, используя аргументы для pushd и popd, которые рассмотрим далее.
LinuxCamp | #shell
$ su vasya
После того, как мы выполним команду, создастся дочерняя оболочка, которая переймет все переменные окружения родителя, определит пользовательские (USER, HOME ...) и выполнит локальные "Васины" скрипты: /home/vasya/.bashrc и т.д.:
$ export USER1VAR="vasya"
$ su xoadmin
$ printenv | grep USER
USER=xoadmin
USER1VAR=vasya
Чет какая-то каша выходит. Половина Васиных переменных, половина юзера xoadmin. Такой способ полезен, когда нам нужно быстро поменять пользователя и не требуется его окружение в изначальном виде.
Если нужно полностью воссоздать среду, как при чистом входе в систему, следует использовать "su -":
$ su - xoadmin
Окружение родителя мы не наследуем и запускаем оболочку типа "login shell", которая выполнит дополнительные скрипты инициализации "/etc/profile", "~/.bash_profile". Подробнее про типы оболочек говорили вот тут, а про этапы их инициализации тут.
Также, когда мы используем "su -", наш рабочий каталог переключается на домашний для целевого пользователя. Мелочь, но факт:
$ pwd
/home/vasya/Music
$ su - xoadmin
$ pwd
/home/xoadmin
LinuxCamp | #shell
$ cd -
/home/xoadmin/Documents
$ cd -
/home/xoadmin/Music
Но этого мало для того, чтобы считать себя профи. Предположим, у вас есть важный каталог "/home/smith/Family/Memories/Photos", который вы часто посещаете.
Скорее всего, чтобы попасть в него, вы введете путь:
$ cd ~/Family/Memories/Photos
Да, но было бы круто сократить этот путь до Photos, независимо от того, где мы находимся:
$ cd Photos
Если вы не сидите где-то, где есть подкаталог Photos, то получите ошибочку:
bash: cd: Photos: No such file or directory
Можно сделать так, чтобы команда cd проверяла дополнительные пути помимо текущего каталога. Для этого нужно перечислить их в переменной CDPATH:
$ CDPATH=$HOME/Family/Memories
$ pwd
/etc
$ cd Photos
/home/smith/Family/Memories/Photos
Несколько каталогов можно указать через разделитель:
$ CDPATH=$HOME:$HOME/Projects:$HOME/Family/Memories:/usr/local
Итого: определяем переменную либо в локальном "~/.bashrc" либо в глобальном "/etc/profile" и перечисляем в ней самые популярные каталоги поиска.
Для меня это, допустим, каталог "Sources", в котором лежат исходники различных утилит:
$ echo $CDPATH
/home/xoadmin/Sources
$ pwd
/home/xoadmin/Music
$ cd picom
/home/xoadmin/Sources/picom
Если нужно быстро переключиться на другой проект, я не буду вводить полный путь до него и укажу только название.
LinuxCamp | #utils