Admin Guides | Сисадмин
11.4K subscribers
1.26K photos
20 videos
34 files
562 links
Обучающий канал по ОС Linux & Windows для начинающих и действующих администраторов.

Админ, реклама: @Ak_Mihail
Биржа: https://telega.in/c/admguides

РКН: https://kurl.ru/nQejS
Download Telegram
Любой сбой инфраструктуры = простои, потери и размытая репутация. 
Но классические платформы виртуализации сегодня либо сложные, либо дорогие, либо не отвечают новым требованиям к отказоустойчивости и управляемости. Есть ли альтернатива? 
Расскажем и покажем на деле:Вебинар «Точка устойчивости ИТ: почему HCI не только про “проще”, но и про “надёжнее”» 

Что вы узнаете:

🔸Почему гиперконвергентная инфраструктура действительно может выигрывать у классических решений
🔸Как снизить затраты времени, ресурсов и усилий на поддержку
🔸Живое демо: веб-интерфейс vStack — управление инфраструктурой без лишней сложности
🔸Анонс новых возможностей — для тех, кто хочет быть на шаг впереди
🔸Открытый Q&A: разберём ваши кейсы, ответим на вопросы

Когда: 10.06 в 11.00

ЗАРЕГИСТРИРОВАТЬСЯ
1🤔1
😁20🌚2🗿2
💬 Вопрос на собеседовании для DevOps-инженера

Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.


Вопрос: Что такое Linux PSI (Pressure Stall Information) и как его использовать для мониторинга?

Ответ: PSI — это механизм ядра Linux, позволяющий отслеживать давление на ресурсы: CPU, память и I/O. Он показывает, сколько времени процессы провели в ожидании этих ресурсов, что помогает выявить узкие места до того, как ситуация станет критичной (например, до вмешательства oom-killer).

PSI не измеряет загрузку напрямую — он измеряет «stall time» — сколько процессов одновременно не могли продолжить работу из-за нехватки ресурса. Это дает более реалистичную картину деградации системы.

Проверка PSI осуществляется через:

cat /proc/pressure/cpu
cat /proc/pressure/memory
cat /proc/pressure/io
Please open Telegram to view this post
VIEW IN TELEGRAM
👍164
Вышла VirtualBox 7.1.10

Oracle выпустила обновление VirtualBox 7.1.10 — кроссплатформенной системы виртуализации. Пакеты доступны для Linux (включая RHEL, Fedora, Ubuntu и др.), macOS и Windows.

Что нового:
• Поддержка ядра Linux 6.15 и предварительная — 6.16
• Исправления для Oracle UEK8 и модулей на Linux
• Устранены краши VM Selector из-за отсутствующих libdl.so и libpthread.so
• На Windows устранены ошибки со звуком и VBoxManage
• Починен буфер обмена при доступе через RDP

Полный список изменений — в changelog Oracle.
9👍3
k8sGPT — ваш ИИ-ассистент для Kubernetes — CLI-утилита, которая помогает диагностировать проблемы в Kubernetes.

Полезна и при онбординге, и в проде: показывает ошибки ресурсов, объясняет, почему они возникли, и предлагает возможные шаги.

В видео:
- Как работает диагностика 
- Сравнение OpenAI и cohere 
- Примеры реальных кейсов  

Узнайте, как внедрить утилиту в свой workflow → 

#реклама
О рекламодателе
4
Перехват stdout/stderr у systemd-сервиса в рантайме: без перезапуска и strace

Иногда вам нужно отладить запущенный systemd-сервис, чтобы понять, что он пишет в stdout или stderr, но:

– сервис уже работает,
– логи в journald запаздывают или отфильтрованы,
– вы не хотите/не можете использовать strace.

Что делать?

1️⃣Ищем дескрипторы вывода

Узнаём PID процесса:

systemctl show -p MainPID your-service


Идём в /proc/<PID>/fd/ — смотрим, куда пишется stdout (обычно fd 1) и stderr (обычно fd 2):

ls -l /proc/<PID>/fd/1


Может быть что-то вроде:

/proc/<PID>/fd/1 -> /dev/null
или -> socket:[12345]
или -> /run/log/journal/...


2️⃣Если это сокет — дублируем вывод

Можно аккуратно “подключиться” к этому дескриптору с помощью socat, если он всё ещё живой:

socat -u ABSTRACT-CONNECT:your-socket - | cat


Или, если это пайп или лог-файл — можно открыть его напрямую и читать в реальном времени:

tail -f /run/log/your-app.log


3️⃣Переоткрытие stdout/stderr без перезапуска

Иногда вы хотите временно направить stdout/err в другой файл (например, в отладочный лог). Если приложение не закрывает дескрипторы, можно сделать:

exec 3>/tmp/debug.log
sudo tee /proc/<PID>/fd/1 >/dev/null <&3


Это дублирует вывод в debug.log. Подходит не для всех случаев, но может сработать.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍96
IT-челлендж Слёрма — проверь свой скилл!

5 дней — 5 тем для IT-инженеров уровня Middle:

▪️ Bash / Linux / DevOps
▪️ Сети
▪️ CI/CD, Docker, Jenkins
▪️ SQL и базы данных
▪️ Информационная безопасность

🔺Короткие, но умные задания в Google Формах
🔺Удобный Telegram-бот ведёт по шагам
🔺Занимает не больше 15–20 минут в день

Подарки победителям:

Подписка на курсы Слёрма
Курс «Администрирование Linux»
Курс «Ansible: Infrastructure as Code»

🎫 30% скидка всем, кто дойдёт до конца

📅 Челлендж с 16 по 20 июня

📍 Регистрация в боте до 15 июня
3👍1👎1
Диагностика high-load без perf и strace: ps + procfs как минимум

Когда серверу плохо, а perf, strace и eBPF недоступны (или неуместны) — остаётся old school: ps, top и чтение /proc.

И это вполне достаточно, чтобы найти:

– кто грузит CPU и память,
– где залипли процессы,
– кто блокирует I/O и тормозит остальных.

1️⃣Кто грузит CPU?
Проверяем самых голодных:

ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu | head


Или top -H — если процесс многопоточный (например, Java или nginx), смотрим нагрузку по тредам.

2️⃣Что делают эти процессы?

Находим PID и лезем в /proc/<pid>/:

cat /proc/<pid>/status | grep -E 'State|VmRSS'


Смотрим состояние (Running, Sleeping, Zombie) и потребление памяти.

Читаем cmdline и cwd:

tr '\0' ' ' < /proc/<pid>/cmdline
ls -l /proc/<pid>/cwd


3️⃣Что с диском?

Находим процессы с активным I/O:

iotop -o    # если доступен


Или вручную:

grep -r . /proc/*/io | grep read_bytes | sort -nk2 | tail


Можно отследить, кто грузит диск даже без iotop.

4️⃣Где залипли?

Иногда процессы висят в ожидании ресурсов. Смотрим wchan:

ps -eo pid,wchan:30,cmd | grep -v -E '^\s*PID' | grep -v running


wchan показывает, где «спит» поток: например, futex_wait_queue_me (ожидание мьютекса) или unix_stream_recvmsg (чтение из сокета).

5️⃣Кто кого держит?

Смотрим locks:

cat /proc/locks


Или проверяем открытые файлы:

ls -l /proc/<pid>/fd/


Быстро даёт понять, кто блокирует файл или ждёт освобождения сокета/канала.

6️⃣А если нагрузка прыгает?

Снимаем срез каждые 5 секунд:

while true; do ps -eo pid,cmd,%cpu,%mem --sort=-%cpu | head -n 10; sleep 5; clear; done


Можно обернуть в watch или bash-циклы для простейшего мониторинга.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍185
🚀⭐️ Разберётесь, как работают стандартные потоки в Linux и научитесь управлять вводом, выводом и ошибками в терминале

👉 Приглашаем на вебинар: Управление потоками ввода и вывода в Linux

На вебинаре вы узнаете:
— Что такое стандартные потоки ввода, вывода и ошибок
— Как перенаправлять потоки с помощью >, >>, <, 2>, | и других операторов
— Как использовать пайпы (конвейеры) для обработки данных в командной строке
— Как комбинировать команды, управлять выводом и создавать эффективные цепочки

В результате вебинара вы:
— Научитесь различать и использовать stdin, stdout и stderr
— Сможете перенаправлять потоки и использовать их в сценариях автоматизации
— Попробуете строить пайплайны и обрабатывать данные без создания временных файлов
— Поймёте, как вывод ошибок и данных влияет на поведение скриптов и программ.

🎁 Урок пройдет в преддверие старта курса «Administrator Linux. Basic». Все участники вебинара получат скидку на обучение.

👉 Для участия зарегистрируйтесь: https://tglink.io/74c432635c2b?erid=2W5zFJYUFAx


Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
2
😁217🔥1
💬 Вопрос на собеседовании для сисадмина

Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.


Вопрос: Чем отличается fork() от exec() в Linux и когда использовать каждый из них?

Ответ: fork() — это системный вызов, создающий новый процесс путём копирования текущего. Получившийся дочерний процесс будет точной копией родительского: он унаследует дескрипторы файлов, переменные окружения и текущее состояние. Основное отличие — у него будет свой PID. Это полезно, если вы хотите создать процесс, который продолжит выполнять ту же программу, но, например, с другими параметрами.

exec() — это семейство функций (execl, execp, execve и др.), которое заменяет текущий процесс на новый, загружая в его адресное пространство другую программу. После вызова exec() оригинальный код процесса больше не выполняется — он полностью замещается. Это удобно, если вы после fork() хотите в дочернем процессе запустить другую программу (что и делает большинство шеллов при запуске команд).
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥114👍1
Живая миграция LXC-контейнера с минимальным downtime: CRIU + rsync

Иногда нужно перенести LXC-контейнер на другой сервер без остановки сервисов внутри — например, при плановой миграции, апгрейде хоста или изменении инфраструктуры.

С помощью CRIU (Checkpoint/Restore In Userspace) и rsync это возможно почти без прерывания работы.


Подготовка контейнера

На обоих серверах должны быть:
•одинаковые версии LXC и CRIU (apt install criu lxc)
• идентичные ядра (или как минимум — поддержка CONFIG_CHECKPOINT_RESTORE)
• включён nesting и features.criu в конфиге LXC

Пример конфигурации:

lxc.apparmor.profile = unconfined
lxc.mount.auto = proc:rw sys:rw
lxc.cap.drop =
lxc.cgroup.devices.allow = a
lxc.seccomp.profile = unconfined


Первый rsync контейнерной файловой системы

Копируем всё, кроме /proc, /sys, сокетов и временных данных:

rsync -aAXv --exclude={"/proc/*","/sys/*","/dev/pts/*","/run/*","/tmp/*"} /var/lib/lxc/myct root@target:/var/lib/lxc/


Заморозка и снятие чекпоинта

На исходном сервере:

lxc-checkpoint -n myct -D /tmp/myct-ckpt -s


Ключ -s говорит заморозить (stop) контейнер после дампа.

Инкрементальный rsync чекпоинта и изменений

rsync -aAXv /tmp/myct-ckpt root@target:/tmp/
rsync -aAXv /var/lib/lxc/myct/ root@target:/var/lib/lxc/myct/


Это нужно, чтобы перенести изменения в файловой системе, произошедшие между первым rsync и чекпоинтом.

Восстановление контейнера

На целевом сервере:

lxc-start -n myct -s -F -D --restore --directory=/tmp/myct-ckpt


Контейнер стартует с того же состояния, с которого был заморожен, включая открытые сокеты, процессы и даже ssh-сессии.
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥5👍1
😁17👍2
Редактирование systemd-юнитов с rollback и временными изменениями

Иногда нужно изменить поведение systemd-сервиса, но:

– не хочется трогать /etc/systemd/system/*.service,
– правка временная или нужна только до следующей перезагрузки,
– важно быстро откатиться без git, ручного копирования и боли.

Решение — systemctl edit и friends.

1️⃣Временные правки без записи на диск

systemctl edit --runtime my-service


Создаёт юнит-оверклайд в /run/systemd/system/ — изменения исчезнут после ребута. Идеально для тестов на проде.

Пример содержимого:

[Service]
Environment="DEBUG=1"
ExecStart=
ExecStart=/usr/bin/my-app --debug


ExecStart= сначала сбрасывает оригинальную строку, затем задаётся новая.

2️⃣Постоянные override-файлы, не трогая оригинал

systemctl edit my-service


Создаёт или редактирует /etc/systemd/system/my-service.service.d/override.conf. При обновлении пакета оригинальный юнит не затирается.

3️⃣Проверка и rollback

Проверяем итоговый конфиг:

systemctl cat my-service


Откат:

systemctl revert my-service


Удаляет override-файлы и возвращает дефолт.

4️⃣Перезапуск с атомарной подменой

Если правите в проде — перезапускайте юнит с минимальным downtime:

systemctl daemon-reexec
systemctl try-restart my-service


Или через socket activation (если настроено) — тогда сам сервис не нужен в момент старта, но запросы не теряются.

5️⃣Подводные камни

– systemctl edit не валидирует синтаксис — можно легко сделать опечатку. Проверяйте через systemd-analyze verify.

– Если меняете ExecStart, не забудьте сначала сбросить его через ExecStart= без аргументов.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥104👍4
Релиз Wireshark 4.4.7

В начале июня 2025 года состоялся релиз стабильной версии свободного программного сетевого анализатора Wireshark 4.4.7.

Первый релиз ветки 4.4 открытого проекта вышел в августе 2024 года. Стабильный релиз Wireshark 1.0.0 состоялся в 2008 году. 


Код проекта распространяется под стандартной общественной лицензией GPLv2.

В Wireshark 4.4.7 разработчики исправили баги и ошибки (уязвимости), обнаруженные в ходе тестирования, а также внесли изменения и дополнения в код проекта, включая обновления в поддержке протоколов.
В сетевом инструменте улучшены графики ввода‑вывода данных, графики для потоков/вызовов VoIP, графики потоков TCP и другие пользовательские интерфейсы и диалоги.
В Wireshark 4.4.7 обновлён код поддержки протоколов AT, BT LE LL, CIGI, genl, LDAP, LIN, Logcat Text, net_dm, netfilter, nvme, SSH, TCPCL, TLS, WebSocket, ZigBee и ZigBee ZCL.

Сборки проекта Wireshark 4.4.7 доступны для Windows, macOS и Linux.
Please open Telegram to view this post
VIEW IN TELEGRAM
9
Продвинутые CLI-команды для разработчиков

Нет, здесь мы не будем говорить о базовых командах вроде ls, rm и cd. Вы и так их знаете.

Эта статья для тех, кто уже уверенно работает в терминале и хочет прокачать свои навыки.

Wget — загрузка файлов из сети

wget — это утилита для скачивания файлов по HTTP, HTTPS и FTP. Работает в фоновом режиме, не требует взаимодействия с пользователем и позволяет загружать файлы даже после выхода из системы.

Простой пример скачивания файла:

wget https://website.com/static/images/header.jpg


Полезные опции:
• -c — продолжить загрузку, если она была прервана
• -O — задать имя выходного файла
• -r — рекурсивная загрузка (например, всей папки)

Скачивание сайта целиком:

wget -r -np -k https://example.com


SCP — безопасное копирование файлов между серверами

SCP (Secure Copy) — это защищенный способ копирования файлов между удаленными машинами через SSH.

Копирование файла с удаленного сервера на локальный компьютер:

scp [email protected]:/path/to/foobar.txt /local/directory/


Копирование файла с локального компьютера на удаленный сервер:

scp /local/directory/foobar.txt [email protected]:/path/to/destination/


Копирование каталога (с флагом -r):

SSH-ключи — избавляемся от ввода пароля

Чтобы автоматизировать SSH-подключения и работу с Git, создайте пару ключей с помощью:

ssh-keygen -t ed25519


После генерации добавьте публичный ключ на сервер:

ssh-copy-id [email protected]


Теперь можно подключаться без пароля:

ssh [email protected]


CHMOD — управление правами доступа

Изменение прав доступа к файлам:

chmod 664 robots.txt
chmod 775 public/images


Расшифровка:
• 664 — владелец и группа могут читать и записывать, остальные — только читать
• 775 — владелец и группа могут читать, записывать и выполнять, остальные — только читать и выполнять

Полный доступ ко всем:

chmod 777 script.sh
👍123
Какой тип RAID обеспечивает полное зеркалирование с возможностью работы при выходе из строя одного диска?
Anonymous Quiz
13%
RAID 0
51%
RAID 1
16%
RAID 5
20%
RAID 10
🤨98👍4🤔3
Аудит безопасности через pam_exec: реагируем на вход в систему кастомным скриптом

Иногда нужно мгновенно реагировать на входы в систему — например, фиксировать факт SSH-подключения, отправлять уведомления в Telegram, SIEM или даже делать снимок экрана. 


Для этого отлично подходит модуль PAM — pam_exec.

Как это работает?

PAM (Pluggable Authentication Modules) позволяет запускать произвольные скрипты при событиях аутентификации. pam_exec — один из таких модулей, который запускает команду или скрипт.

Отправка уведомления в Telegram при SSH-входе

1️⃣Создаём скрипт /usr/local/bin/ssh-login-alert.sh:

#!/bin/bash

USER="$PAM_USER"
IP="$PAM_RHOST"
TIME=$(date '+%Y-%m-%d %H:%M:%S')

TOKEN="ваш_бот_токен"
CHAT_ID="ваш_чат_id"

MSG="Пользователь $USER вошёл в систему с IP $IP в $TIME"

curl -s -X POST "https://api.telegram.org/bot$TOKEN/sendMessage" -d chat_id="$CHAT_ID" -d text="$MSG"


Скрипту нужно дать права на исполнение:

chmod +x /usr/local/bin/ssh-login-alert.sh


2️⃣Подключаем pam_exec к SSHD, добавив в /etc/pam.d/sshd строку:

session optional pam_exec.so /usr/local/bin/ssh-login-alert.sh


3️⃣Проверяем

Теперь при каждом успешном входе по SSH будет отправляться сообщение в Telegram.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍179
💬 Вопрос на собеседовании для DevOps-инженера

Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.


Вопрос: Как работает механизм capabilities в Linux, и зачем он нужен?

Ответ: Capabilities — механизм, который разбивает права суперпользователя на мелкие привилегии. Это позволяет процессам выполнять отдельные задачи, например, работать с сетью или управлять временем, без полного root-доступа.

Пример использования:

1️⃣Проверка привилегий процесса:

cat /proc/<PID>/status | grep Cap


2️⃣ Назначение привилегий файлу:
Например, чтобы разрешить ping без root-прав:

sudo setcap cap_net_raw=ep /bin/ping


3️⃣ Проверка привилегий файла:

getcap /bin/ping


Capabilities повышают безопасность, ограничивая доступ только необходимыми правами.
Please open Telegram to view this post
VIEW IN TELEGRAM
6👏1
🚀 Почему пользователи платят $30 за простой конвертер картинок? Давайте разберемся.

Кирилл из комьюнити создал простой продукт всего за один месяц, внедрив метод, которой уже принес результат.

Как он это сделал:
1️⃣ Анализ спроса: через поисковые запросы он увидел, что много людей ищут конвертацию «HEIC to JPG».
2️⃣ Фокус на главном: удалил всё лишнее, оставив только функцию конвертации в один клик.
3️⃣ Скорость внедрения: за 30 дней сделал запуск без перфекционизма.

Посты про конвертер (ч.1, ч.2)

Что из этого получилось:
— Доход $500 в месяц с тенденцией роста.
— Более $10K заработано на конвертере.
— $0 на рекламу, всего $40 в месяц на сервер.

Выводы:
— Люди платят за удобство, даже если есть бесплатные аналоги.
— Продукт функционирует автоматически с минимальной поддержкой.
— Быстрая и экономичная проверка идеи может быть успешной.

Результаты из комьюнити билдеров:
— Более 400 запусков по этой методике.
— Некоторые продукты уже набрали от 50К до 100К+ пользователей.

Присоединяйтесь к @its_capitan — следите за процессом разработки, продвижения и узнайте, сколько можно заработать на таких микро-продуктах.

Реклама: ИП Зуев Игорь Владимирович, ИНН: 360408359441, Erid: 2VtzqvFT9tJ
4💊2👍1👎1👏1