ЯдроКодаподготовка к экзаменам
Учебная платформа

Загружаем материалы

Подготавливаем материалы и навигацию по разделу.

Сведения о системе Linux: версия, процессор, память и нагрузка

Автор: · Обновлено

Инвентаризация отвечает на конкретные вопросы: какой дистрибутив запущен, какое ядро работает сейчас, сколько CPU доступно процессу и хватает ли памяти для нагрузки. Одной команды «версия Linux» недостаточно: ядро, пользовательское окружение и приложения обновляются независимо.

Дистрибутив и активное ядро

cat /etc/os-release
uname -r
uname -m
getconf LONG_BIT

В os-release смотрите PRETTY_NAME, ID и VERSION_ID, если поле присутствует. Если /etc/os-release отсутствует, стандарт допускает /usr/lib/os-release; файл в /etc имеет приоритет. uname -r описывает работающее ядро, а установленный новый пакет ядра может начать использоваться только после перезагрузки. uname -m сообщает архитектуру ядра, getconf LONG_BIT — разрядность текущего пользовательского окружения; на одном CPU возможны разные сочетания.

Для Astra Linux сверяйте os-release с файлами релиза, поставляемыми вашей редакцией, например /etc/astra_version, если он существует. Для ALT смотрите os-release и /etc/altlinux-release, когда он предоставлен системой. Название дистрибутива не выводят из текста ядра: общее ядро может работать с другим окружением. hostnamectl объединяет часть сведений, но требует подходящей службы; в минимальном контейнере её может не быть.

CPU, устройства и время

lscpu
nproc
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS
timedatectl status

Lscpu показывает архитектуру, модель, сокеты, ядра и потоки, как их видит система. Количество логических CPU не равно числу физических ядер. Nproc учитывает доступные текущему процессу CPU; версии и ограничения окружения влияют на детали учёта квоты, поэтому сравнивайте также affinity и cgroup. В виртуальной машине некоторые аппаратные поля описывают виртуальное оборудование.

lspci и lsusb, если установлены, перечисляют соответствующие устройства. dmidecode обычно требует административных прав и читает таблицы прошивки; их значения могут быть пустыми или неточными. Для температуры используйте доступные датчики через sensors из lm-sensors. Не всякая VM предоставляет температурные сенсоры, и отсутствие строки не означает нулевую температуру.

Timedatectl показывает часовой пояс и состояние синхронизации времени. timedatectl list-timezones помогает выбрать корректное имя; администратор учебной VM может применить sudo timedatectl set-timezone Europe/Moscow и снова проверить status. Это меняет отображаемый часовой пояс, а не произвольно исправляет время всех событий. dmesg читает сообщения ядра о найденных устройствах и сбоях. При запрете доступа проверьте политику системы, не отключайте её ради просмотра; часто администратор читает kernel journal через journalctl -k.

Free: почему мало free ещё не значит мало памяти

free -h
free -w -m
head -n 6 /proc/meminfo

Free читает показатели ядра. free — прямо сейчас неиспользуемая память, available — оценка объёма, который можно предоставить приложениям без вытеснения в swap. Cache ускоряет повторное чтение файлов, часть кешей можно освободить при спросе, но не вся память кеша немедленно доступна. Формула колонки used менялась между версиями procps; смотрите локальный man free, а решение принимайте по available и поведению нагрузки.

Пример: у системы 8 GiB, free 0.3 GiB, available 3 GiB. Это не доказательство нехватки памяти. Нужны динамика, ожидания и фактические ошибки. Принудительное очищение page cache делает повторное чтение дороже и не устраняет утечку приложения.

Swap хранит вытесненные страницы; наличие занятого swap не означает, что сейчас идёт активный обмен с диском. Для активности нужны интервальные измерения, например vmstat 1 3. Создание swap и выбор ФС относятся к уроку о дисках. В контейнере free может показывать память хоста; доступный приложению предел уточняют по cgroup, а не по одной строке total.

Память процесса и load average

ps -eo pid,comm,rss,vsz --sort=-rss | head -n 6
uptime

RSS показывает резидентные страницы процесса, VSZ — виртуальное адресное пространство. Сумма RSS нескольких процессов может повторно учитывать общие страницы; для распределения общей памяти полезен PSS из smaps_rollup при разрешённом доступе. Размер виртуальной памяти не является текущим потреблением RAM.

Три числа load average относятся к интервалам 1, 5 и 15 минут и не являются процентами CPU. В Linux показатель учитывает готовые к исполнению задачи и задачи в непрерываемом ожидании. Поэтому высокий load совместим с невысокой загрузкой CPU при задержке I/O. Сопоставляйте его с доступными CPU, состояниями процессов и измерениями во времени; отдельный снимок не определяет причину.

Версии программ и версии пакетов

python3 --version относится к найденному интерпретатору, command -v python3 помогает заметить виртуальное окружение. java -version показывает активную Java и часто пишет версию в stderr. psql --version сообщает версию клиента PostgreSQL; версия подключённого сервера получается запросом SHOW server_version;. Эти значения могут различаться без ошибки.

В Debian-подобной системе dpkg-query -W ИМЯ_ПАКЕТА выводит установленную версию пакета; apt-cache policy ИМЯ_ПАКЕТА также показывает кандидата. В RPM-системах используют rpm -q ИМЯ_ПАКЕТА. Пакетная версия, бинарный файл в PATH и работающий процесс могут относиться к разным установкам: фиксируйте, что именно измерили.

Практика: паспорт учебной машины

Составьте таблицу из пяти строк: дистрибутив, активное ядро, архитектура, доступные CPU, available RAM. Для каждой сохраните команду и время наблюдения. Затем объясните на примере psql --version, почему версия клиента не доказывает версию сервера.

Если нагрузка кажется высокой, сделайте три наблюдения с интервалом и укажите гипотезу, которую ещё нужно проверить. Достаточный результат урока — проверяемые факты и корректные границы выводов; запуск стресс-теста до понимания лимитов не требуется.

Источники