Дайджесты новостей
Натюрморт рабочего места системного инженера с терминалом отладки ядра Linux, справочником Linux Cheat Sheet и карточками системных вызовов.

Большой справочник по Linux и Bash: от архитектуры ядра до отладки

Ты наверняка замечал забавную профессиональную иллюзию: современный разработчик может виртуозно жонглировать микросервисами, настраивать распределенный кэш и писать пайплайны CI/CD, но оказывается в полнейшей растерянности, когда на боевом сервере что-то идет не так. Открывается терминал, вводятся привычные top и df -h, всё вроде бы чисто, а сервис отказывается принимать запросы или падает при попытке создать крошечный временный файл.

Инженер Сергей Олизаревич выпустил масштабное открытое практическое руководство Linux Cheat Sheet, которое закрывает этот пробел. Это не просто шпаргалка с командами, а глубокий системный гид на 300+ минут чтения, объединяющий низкоуровневую архитектуру ядра Linux, сетевой стек и разбор 8 сценариев тяжелых производственных аварий.

Индексные дескрипторы и виртуальная файловая система

Один из самых поучительных инцидентов, подробно разобранных в справочнике, знаком многим сисадминам: диск заполнен на 40%, но любая попытка создать файл возвращает ошибку No space left on device.

Причина кроется в архитектуре файловых систем. Каждый файл в Linux описывается индексным дескриптором (inode), хранящим метаданные и указатели на блоки данных. Количество inode фиксируется при форматировании раздела. Если микросервис генерирует миллионы крошечных файлов сессий или логов, свободные inode закончатся задолго до исчерпания физических гигабайтов. Напомним, базовые правила разметки диска мы разбирали в материале Иерархия файловой системы Linux: зачем нужен FHS и как устроена система.

Диагностика выполняется быстрой проверкой:

# Проверка свободного места в байтах против свободных inode
df -h
df -i /var

Сетевая диагностика нового поколения

Справочник решительно отправляет на пенсию устаревшие утилиты 90-х годов вроде netstat и ifconfig. Вместо них автор учит работать с современным интерфейсом ядра через ss и ip. Например, команда ss -tulpn мгновенно показывает слушающие сокеты без тормозящего сканирования файловой системы /proc.

А для прецизионного замера задержек HTTP-сервисов предлагается готовый рецепт с форматом вывода curl -w, раскладывающий сетевой раундтрип на фазы с точностью до миллисекунды:

curl -o /dev/null -s -w '  DNS Lookup:       %{time_namelookup} s
  TCP Connect:      %{time_connect} s
  TLS Handshake:    %{time_appconnect} s
  Time to 1st Byte: %{time_starttransfer} s
  Total Time:       %{time_total} s
' https://api.internal.net/health

С таким однострочником ты сразу видишь, где затор: перегружен ли корпоративный DNS-сервер, тормозит ли TLS-рукопожатие или сам бэкенд долго формирует ответ.

Трассировка зависших процессов

Когда процесс потребляет 100% одного ядра и перестает отвечать, обычные логи часто бессильны. В руководстве детально показано, как прицепиться к работающему процессу через strace, чтобы увидеть реальные системные вызовы ядра:

# Подсчет времени и частоты системных вызовов активного процесса
strace -c -p $(pgrep -n node)

Поиск зомби-процессов и утечек сокетов

При высокой нагрузке сокеты часто скапливаются в состоянии TIME_WAIT. Справочник дает готовый конвейер: ss -tan state time-wait | wc -l. Если число зашкаливает за десятки тысяч, пора включать параметр ядра net.ipv4.tcp_tw_reuse.

Справочник доступен бесплатно на GitHub Pages автора и включает 28 интерактивных заданий на полигоне. Это отличный способ прокачать инженерную уверенность в Linux.