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

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

РКН: https://kurl.ru/nQejS
Download Telegram
Амбициозные проекты, удалёнка и рост в сфере DevOps — звучит как работа мечты! Отправляйте резюме до 8 июня и присоединяйтесь к команде YADRO! 🧑‍💻

Как получить оффер за 3 дня? Подробности на карточках выше — листайте!

Оставляйте заявку — мы ждём именно вас!
1
Тихие подвисания через zombie TCP connections: почему idle-сессии могут убивать сервис

Всё вроде работает: соединение открыто, но данных нет, новых клиентов не пускает. Вы перезапускаете сервис — и всё ок. Через день — снова. Причина может быть в зомби-TCP-соединениях.

В чём проблема

Некоторые клиенты (особенно IoT, нестабильные мобильные сети или старые прокси) теряют соединение без корректного FIN или RST. С точки зрения ядра, соединение всё ещё открыто.


Если приложение не настраивает таймауты — такие подключения висят неделями и занимают ресурсы.

Как заметить

ss -o state established '( dport = :http or dport = :ssh )'


Ищите timer:(on, x ms, y retrans) — это таймеры ядра. Если timer:(keepalive,...) или timer:(on,...) висят слишком долго — это подозрительно.

Решение — настраиваем TCP Keepalive

Добавьте в sysctl:

net.ipv4.tcp_keepalive_time = 60
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_keepalive_probes = 5


Это значит: спустя 60 секунд без активности начнутся keepalive-пробы. Если за 75 секунд клиент не ответил — соединение будет закрыто.

Ещё лучше — на уровне приложения

Например, для Nginx:

keepalive_timeout  15s;


Для PostgreSQL через tcp_keepalives_* в конфиге или переменных окружения.
👍175
Любой сбой инфраструктуры = простои, потери и размытая репутация. 
Но классические платформы виртуализации сегодня либо сложные, либо дорогие, либо не отвечают новым требованиям к отказоустойчивости и управляемости. Есть ли альтернатива? 
Расскажем и покажем на деле:Вебинар «Точка устойчивости ИТ: почему 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