capsh и Linux capabilities
В Linux root-аккаунт обладает полным набором прав, но далеко не всегда это нужно. Capabilities позволяют «разрезать» привилегии на части и выдавать только нужные.
Например, чтобы процесс слушал порты ниже 1024, достаточно capability CAP_NET_BIND_SERVICE. Полный root здесь избыточен.
Проверка текущих прав:
Запуск процесса только с нужной capability:
⚡️ Так можно запускать сервисы безопаснее, следуя принципу «минимально необходимых прав». Это актуально и для контейнеров, и для демонов в продакшене.
В Linux root-аккаунт обладает полным набором прав, но далеко не всегда это нужно. Capabilities позволяют «разрезать» привилегии на части и выдавать только нужные.
Это снижает риски: сервис не сможет сделать ничего лишнего, даже если его взломают.
Например, чтобы процесс слушал порты ниже 1024, достаточно capability CAP_NET_BIND_SERVICE. Полный root здесь избыточен.
Проверка текущих прав:
capsh --print
Запуск процесса только с нужной capability:
capsh --drop=all --add=cap_net_bind_service -- -c "./server"
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17👍11
Multikernel: несколько ядер Linux на одном хосте
Проект Multikernel позволяет запускать на одной машине сразу несколько независимых экземпляров ядра Linux — без гипервизора и накладных расходов виртуализации.
Каждый экземпляр ядра получает прямой доступ к CPU и ресурсам, изоляция выше, чем у контейнеров, а производительность близка к «железу».
⏺ Запуск через улучшенный kexec, управление и отладка — через /proc/multikernel.
⏺ Для обмена сообщениями используется собственный IPI-фреймворк.
⏺ Поддерживается динамическое выделение ресурсов и изоляция отказов.
Проект Multikernel позволяет запускать на одной машине сразу несколько независимых экземпляров ядра Linux — без гипервизора и накладных расходов виртуализации.
Каждый экземпляр ядра получает прямой доступ к CPU и ресурсам, изоляция выше, чем у контейнеров, а производительность близка к «железу».
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍2🔥1🤔1
Профилирование CPU с perf и Flamegraph
Они показывают только процессы, но не дают понимания, что именно внутри процесса грузит CPU.
Здесь на помощь приходит perf и Flamegraph.
perf — запись стека вызовов
Для начала нужно установить perf (apt install linux-tools-common linux-tools-$(uname -r) на Debian/Ubuntu).
Простейший пример:
⏺ -F 99 — частота выборки 99 Гц
⏺ -a — профилируем все CPU
⏺ -g — сохраняем стеки вызовов
⏺ -- sleep 10 — профилируем 10 секунд
После этого создаётся файл perf.data, содержащий информацию о нагрузке CPU.
perf script + Flamegraph — визуализация горячих функций
Flamegraph позволяет видеть «горячие» участки кода:
⏺ stackcollapse-perf.pl — склеивает одинаковые стеки
⏺ flamegraph.pl — генерирует интерактивный SVG
Открыв out.svg в браузере, можно увидеть, какие функции съедают процессорное время. Чем выше «полоса», тем дольше выполняется функция.
Когда сервер «тормозит» или высокая загрузка CPU не очевидна, стандартных инструментов вроде top часто недостаточно.
Они показывают только процессы, но не дают понимания, что именно внутри процесса грузит CPU.
Здесь на помощь приходит perf и Flamegraph.
perf — запись стека вызовов
Для начала нужно установить perf (apt install linux-tools-common linux-tools-$(uname -r) на Debian/Ubuntu).
Простейший пример:
sudo perf record -F 99 -a -g -- sleep 10
После этого создаётся файл perf.data, содержащий информацию о нагрузке CPU.
perf script + Flamegraph — визуализация горячих функций
Flamegraph позволяет видеть «горячие» участки кода:
perf script | stackcollapse-perf.pl | flamegraph.pl > out.svg
Открыв out.svg в браузере, можно увидеть, какие функции съедают процессорное время. Чем выше «полоса», тем дольше выполняется функция.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍6
Для обнаружения медленных процессов и аномальной активности на нескольких Linux-серверах лучше использовать:
Anonymous Quiz
20%
top на каждом сервере
72%
Централизованное логирование через rsyslog + SIEM
2%
cron
6%
systemctl
❤4👍1
Dstat и его наследники: удобный мониторинг в реальном времени
Стандартный набор (iostat, vmstat, ifstat) даёт нужные данные, но разрозненно — приходится открывать несколько окон и сводить всё в голове.
⏺ dstat решает эту проблему: он объединяет метрики CPU, IO, памяти, сети и процессов в одной таблице. Сразу видно картину происходящего. Например:
CPU, диски, сеть и память — всё в одной строке, обновляется раз в секунду.
Из новых инструментов можно отметить atop (с ретроспективным просмотром) и лёгкие аналоги — duf, dstat-variants, которые удобнее для быстрых проверок.
Когда сервер «тормозит», хочется сразу понять: проблема в диске, CPU или сети?
Стандартный набор (iostat, vmstat, ifstat) даёт нужные данные, но разрозненно — приходится открывать несколько окон и сводить всё в голове.
dstat -cdnm
CPU, диски, сеть и память — всё в одной строке, обновляется раз в секунду.
Из новых инструментов можно отметить atop (с ретроспективным просмотром) и лёгкие аналоги — duf, dstat-variants, которые удобнее для быстрых проверок.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤4
lshw – список железных компонентов сервера
Команда lshw помогает получить детальную информацию о “железе” сервера: процессоре, памяти, накопителях, сетевых интерфейсах, USB и аудио-устройствах.
Установка lshw
Если команда не исполняется, установите пакет:
CentOS
Debian/Ubuntu
Вывод информации о компонентах
Чтобы получить короткий список оборудования, используйте:
Пример вывода:
Другие полезные команды
Вывод в развернутом виде:
Сохранение в файл:
Информация только о CPU:
Команда lshw помогает получить детальную информацию о “железе” сервера: процессоре, памяти, накопителях, сетевых интерфейсах, USB и аудио-устройствах.
Установка lshw
Если команда не исполняется, установите пакет:
CentOS
sudo yum install lshw
Debian/Ubuntu
sudo apt install lshw
Вывод информации о компонентах
Чтобы получить короткий список оборудования, используйте:
lshw -short
Пример вывода:
H/W path Device Class Description
=====================================================
system Virtual Machine
/0 bus Virtual Machine
/0/5 processor Intel(R) Core(TM) i3-6100T CPU @ 3.20GHz
/0/51 memory 4GiB System Memory
/0/1 scsi2 storage
/0/1/0.0.0 /dev/sda disk 160GB SCSI Disk
/0/1/0.0.0/1 /dev/sda1 volume 500MiB EXT4 volume
/1 eth0 network Ethernet interface
Другие полезные команды
Вывод в развернутом виде:
lshw
Сохранение в файл:
lshw > hardware_info.txt
Информация только о CPU:
lshw -C CPU
👍14❤4
Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.Балансировка нагрузки между runqueue разных CPU — критически важная задача. Если один CPU перегружен, а другой простаивает, планировщик может переместить процессы между runqueue. Неправильная балансировка может привести к “CPU starvation” или падению производительности в многопроцессорных системах.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍5❤2
pigz вместо gzip
pigz (parallel implementation of gzip) решает эту проблему — он использует все доступные CPU и значительно ускоряет компрессию.
Пример:
Архив будет создан в формате .gz, совместимом с gzip. Разница только в скорости: на сервере с 8 ядрами сжатие может ускориться в 5–7 раз.
Для распаковки можно использовать как pigz -d, так и обычный gzip -d.
Обычный gzip работает в один поток, поэтому на современных серверах с несколькими ядрами он сжимает большие файлы медленно.
pigz (parallel implementation of gzip) решает эту проблему — он использует все доступные CPU и значительно ускоряет компрессию.
Пример:
pigz backup.sql
Архив будет создан в формате .gz, совместимом с gzip. Разница только в скорости: на сервере с 8 ядрами сжатие может ускориться в 5–7 раз.
Для распаковки можно использовать как pigz -d, так и обычный gzip -d.
👍22❤5
Энтузиасты объединили двенадцать 56K модемов и установили рекорд скорости коммутируемого доступа
Команда The Serial Port объединила двенадцать 56K модемов (Courier V.Everything 56K) через Multilink PPP, чтобы достичь скорости загрузки 668 Кбит/с на ПК с Windows XP и парой PCI-карт с последовательными портами.
Ранее коммерческие решения использовали 2–4 модема, но массового применения не получили из-за сложности подключения и ограничений провайдеров.
⏺ Энтузиасты проверили работу MPPP на современном интернет-провайдере и смогли масштабировать систему до двенадцати модемов, обеспечив стабильную загрузку видео с минимальной задержкой.
Команда The Serial Port объединила двенадцать 56K модемов (Courier V.Everything 56K) через Multilink PPP, чтобы достичь скорости загрузки 668 Кбит/с на ПК с Windows XP и парой PCI-карт с последовательными портами.
Это позволило проверить возможности старого оборудования для стриминга видео и демонстрирует потенциал MPPP для объединения нескольких модемов в один логический канал.
Ранее коммерческие решения использовали 2–4 модема, но массового применения не получили из-за сложности подключения и ограничений провайдеров.
Please open Telegram to view this post
VIEW IN TELEGRAM
😁23❤6👍1
SysRq Magic Key в Linux: экстренное управление системой
Иногда сервер или ноутбук может зависнуть так, что даже kill -9 не помогает.
В Linux для таких случаев есть «волшебная кнопка» — SysRq (System Request).
С её помощью можно отправлять ядру команды напрямую, минуя оболочку и процессы.
Включение SysRq
Обычно функция включена, но можно проверить:
⏺ 0 — выключено
⏺ 1 — включены все команды
⏺ или битовая маска (например, 16 = только sync).
Чтобы включить:
Постоянно (через sysctl):
Как пользоваться
Нужно зажать Alt + SysRq (Print Screen) и нажать нужную клавишу:
• r — вернуть управление клавиатуре (Raw → XLATE)
• e — завершить все процессы (SIGTERM)
• i — убить все процессы (SIGKILL)
• s — сбросить данные на диск (sync)
• u — перемонтировать файловые системы в read-only
• b — немедленная перезагрузка
«Безопасная последовательность» (REISUB)
Если система зависла:
Это поможет корректно завершить процессы, сохранить данные и только потом перезагрузиться.
Иногда сервер или ноутбук может зависнуть так, что даже kill -9 не помогает.
В Linux для таких случаев есть «волшебная кнопка» — SysRq (System Request).
С её помощью можно отправлять ядру команды напрямую, минуя оболочку и процессы.
Включение SysRq
Обычно функция включена, но можно проверить:
cat /proc/sys/kernel/sysrq
Чтобы включить:
echo 1 > /proc/sys/kernel/sysrq
Постоянно (через sysctl):
echo "kernel.sysrq = 1" >> /etc/sysctl.conf
sysctl -p
Как пользоваться
Нужно зажать Alt + SysRq (Print Screen) и нажать нужную клавишу:
• r — вернуть управление клавиатуре (Raw → XLATE)
• e — завершить все процессы (SIGTERM)
• i — убить все процессы (SIGKILL)
• s — сбросить данные на диск (sync)
• u — перемонтировать файловые системы в read-only
• b — немедленная перезагрузка
«Безопасная последовательность» (REISUB)
Если система зависла:
Alt + SysRq + r
Alt + SysRq + e
Alt + SysRq + i
Alt + SysRq + s
Alt + SysRq + u
Alt + SysRq + b
Это поможет корректно завершить процессы, сохранить данные и только потом перезагрузиться.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍11❤6
Какой инструмент позволяет детально отследить утечки памяти в работающем процессе, включая используемые библиотеки?
Anonymous Quiz
9%
top
32%
valgrind
35%
htop
23%
ps aux
👎9👍8🔥2
tuned: профили оптимизации производительности Linux
tuned — это демон и набор профилей, которые позволяют автоматически подстраивать параметры ядра и драйверов под разные сценарии использования.
Вместо того чтобы вручную править sysctl, grub и конфиги драйверов, можно активировать готовый набор оптимизаций.
Например:
⏺ throughput-performance — максимум пропускной способности, полезно для серверов БД и высоконагруженных сервисов;
⏺ latency-performance — снижение задержек для realtime-задач и телеком-сервисов;
⏺ virtual-guest — оптимизация гостевых VM;
⏺ powersave — агрессивная экономия энергии.
Посмотреть список доступных профилей:
Включить нужный:
Если стандартные профили не подходят, можно собрать свой — с настройкой CPU governor, IRQ affinity, параметров сети и дисков.
tuned — это демон и набор профилей, которые позволяют автоматически подстраивать параметры ядра и драйверов под разные сценарии использования.
Вместо того чтобы вручную править sysctl, grub и конфиги драйверов, можно активировать готовый набор оптимизаций.
Например:
Посмотреть список доступных профилей:
tuned-adm list
Включить нужный:
tuned-adm profile throughput-performance
Если стандартные профили не подходят, можно собрать свой — с настройкой CPU governor, IRQ affinity, параметров сети и дисков.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤2🔥2
Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍3😁1
chattr: защита файлов от изменений
В Linux есть малозаметный, но очень полезный механизм — атрибуты файловой системы. Один из них — immutable.
Если включить его, файл станет полностью «замороженным»: его нельзя изменить, удалить, перезаписать или даже переименовать, пока не снять атрибут.
Причём это ограничение действует даже для root.
Пример — защита DNS-конфига:
Теперь ни один скрипт автоконфигурации сети не сможет переписать DNS. Проверить флаги:
Снять защиту можно так:
В Linux есть малозаметный, но очень полезный механизм — атрибуты файловой системы. Один из них — immutable.
Если включить его, файл станет полностью «замороженным»: его нельзя изменить, удалить, перезаписать или даже переименовать, пока не снять атрибут.
Причём это ограничение действует даже для root.
Пример — защита DNS-конфига:
chattr +i /etc/resolv.conf
Теперь ни один скрипт автоконфигурации сети не сможет переписать DNS. Проверить флаги:
lsattr /etc/resolv.conf
Снять защиту можно так:
chattr -i /etc/resolv.conf
👍25❤6
Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.Основные компоненты:
— Hooks: точки в сетевом стеке, через которые проходят пакеты (PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING).
— iptables/nftables: инструменты управления правилами фильтрации и перенаправления трафика.
— Connection Tracking: механизм, позволяющий отслеживать состояние соединений и применять stateful-фильтрацию.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8🔥4
parallel ssh (pssh)
Когда десятки серверов, pssh экономит кучу времени. Вместо ручного обхода выполняем команды сразу везде.
Файл hosts.txt:
Базовые примеры:
Можно запускать скрипты:
А ещё есть pscp для копирования:
Когда десятки серверов, pssh экономит кучу времени. Вместо ручного обхода выполняем команды сразу везде.
Файл hosts.txt:
server1
server2
server3
Базовые примеры:
pssh -h hosts.txt -i "uptime" # посмотреть аптайм всех серверов
pssh -h hosts.txt -i "df -h /" # проверить свободное место на /
pssh -h hosts.txt -i "systemctl status nginx" # проверить nginx
Можно запускать скрипты:
pssh -h hosts.txt -i "bash /tmp/cleanup.sh"
А ещё есть pscp для копирования:
pscp -h hosts.txt local.conf /etc/myapp/config.conf
👍22❤6
screen vs tmux: зачем и в чём разница
Когда вы работаете по SSH и связь внезапно обрывается — все запущенные процессы (сборка, миграция БД, обновление пакетов) падают вместе с сессией.
Чтобы этого избежать, придумали терминальные мультиплексоры — программы, которые запускают «виртуальный терминал» внутри текущего, и процессы продолжают работать даже при отключении.
Два самых популярных инструмента: screen и tmux.
screen — классика Linux
Появился ещё в 1987 году. До сих пор предустановлен на множестве серверов.
Основные команды:
Особенности:
⏺ Работает почти везде «из коробки».
⏺ Очень лёгкий и простой.
⏺ Поддерживает разделение окна, но не очень удобно.
tmux — современный и функциональный
Разработан в 2007 году как альтернатива screen. Сейчас стал «дефолтным выбором» для большинства админов и девопсов.
Основные команды:
Фишки:
⏺ Красивый и настраиваемый статусбар.
⏺ Удобное разделение экрана на панели:
• Ctrl+b " — горизонтально
• Ctrl+b % — вертикально
⏺ Поддержка скриптов и плагинов.
⏺ Легко кастомизировать под свои привычки.
Когда вы работаете по SSH и связь внезапно обрывается — все запущенные процессы (сборка, миграция БД, обновление пакетов) падают вместе с сессией.
Чтобы этого избежать, придумали терминальные мультиплексоры — программы, которые запускают «виртуальный терминал» внутри текущего, и процессы продолжают работать даже при отключении.
Два самых популярных инструмента: screen и tmux.
screen — классика Linux
Появился ещё в 1987 году. До сих пор предустановлен на множестве серверов.
Основные команды:
screen # новая сессия
screen -S mywork # сессия с именем
screen -ls # список активных
screen -r mywork # восстановить сессию
Ctrl+a d # отцепиться
Особенности:
tmux — современный и функциональный
Разработан в 2007 году как альтернатива screen. Сейчас стал «дефолтным выбором» для большинства админов и девопсов.
Основные команды:
tmux new -s mywork # создать сессию
tmux ls # список
tmux attach -t mywork # вернуться
tmux detach # выйтил
Фишки:
• Ctrl+b " — горизонтально
• Ctrl+b % — вертикально
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥7❤3
Что делает команда ss -tulnp?
Anonymous Quiz
10%
Показывает таблицу маршрутов
87%
Отображает сетевые соединения и процессы, их использующие
2%
Меняет MTU
1%
Проверяет DNS
😁12❤2