← Назад к вопросам

В каком файле по дефолту будет храниться информация об ОС, версии в линуксе

1.0 Junior🔥 251 комментариев
#Linux и администрирование

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Ответ: Основные файлы с информацией об ОС и её версии в Linux

В Linux нет единого «волшебного» файла, где хранится вся информация об операционной системе и её версии. Вместо этого данные распределены по нескольким стандартным файлам в виртуальной файловой системе /proc и в каталоге /etc. Это связано с модульной и открытой природой Linux и тем, что дистрибутив (например, Ubuntu, CentOS, Fedora) — это не только ядро, но и набор пакетов и конфигураций от вендора.

Ключевые файлы для получения информации

Вот основные файлы, которые нужно проверять, чтобы получить полную картину:

1. Информация о ядре Linux

  • /proc/version – самый прямой источник. Содержит версию ядра, информацию о компиляторе и строку версии. Вывод динамический, формируется ядром.

    cat /proc/version
    # Пример вывода: Linux version 5.15.0-91-generic (buildd@lcy02-amd64-008) (gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) #101-Ubuntu SMP Fri Nov 10 16:16:00 UTC 2023
    
  • uname – команда, которая чаще всего используется для получения информации о ядре.

    uname -r  # Только версия ядра (release)
    uname -a  # Вся информация: ядро, hostname, версия, архитектура, etc.
    

2. Информация о дистрибутиве (Distribution Release)

Здесь данные зависят от конкретного дистрибутива, но есть стандартные попытки.

  • /etc/os-release (или /usr/lib/os-release) – главный современный файл. Согласно Freedesktop.org Standard, это предпочтительный способ. Содержит удобочитаемые переменные.
    cat /etc/os-release
    # Или для красивого вывода:
    grep -E '^(NAME|VERSION|PRETTY_NAME)=' /etc/os-release
    
    Пример содержимого:
```ini
PRETTY_NAME="Ubuntu 22.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.3 LTS"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
```
  • /etc/lsb-release – файл, специфичный для дистрибутивов, следующих Linux Standard Base (LSB) (в основном Ubuntu и производные). Содержит похожую информацию.

    cat /etc/lsb-release
    
  • /etc/*-release – устаревший, но до сих пор распространённый метод. Каждый дистрибутив создаёт свой файл.

    ls -la /etc/*release
    # Примеры файлов: /etc/redhat-release, /etc/debian_version, /etc/SuSE-release
    cat /etc/redhat-release  # Для RHEL/CentOS/Rocky
    

3. Дополнительные источники информации

  • /proc/cpuinfo – не показывает версию ОС, но критически важен для понимания аппаратной платформы (CPU, архитектура), на которой работает система.

    grep 'model name' /proc/cpuinfo | head -1
    
  • Команда hostnamectl (часть systemd) – предожает красивую сводную информацию.

    hostnamectl
    
    Вывод включает **Operating System**, **Kernel**, и **Architecture**.

Практический совет для скриптов и автоматизации

Для написания кроссплатформенных скриптов (Ansible, bash-скриптов) оптимальный алгоритм такой:

  1. Проверить наличие /etc/os-release и извлечь оттуда ID и VERSION_ID.
  2. Если файла нет, попробовать определить дистрибутив по другим релиз-файлам (/etc/redhat-release).
  3. Для версии ядра всегда использовать uname -r.

Пример bash-функции для определения дистрибутива:

get_os_info() {
    if [ -f /etc/os-release ]; then
        # Самый надёжный современный способ
        . /etc/os-release
        echo "Дистрибутив: $NAME"
        echo "Версия: $VERSION_ID"
        echo "Кодовое имя: $VERSION_CODENAME"
    elif [ -f /etc/redhat-release ]; then
        echo "Дистрибутив: RHEL/CentOS/Fedora (старый стиль)"
        echo "Версия: $(cat /etc/redhat-release)"
    else
        echo "Информация о дистрибутиве не найдена в стандартных местах."
    fi
    echo "Версия ядра: $(uname -r)"
}

Итог: Для информации о ядре смотрите /proc/version или используйте uname. Для информации о дистрибутиве и его версии в первую очередь ищите стандартизированный файл /etc/os-release. Понимание этих мест хранения данных — базовый навык для администратора Linux и DevOps-инженера, необходимый для отладки, логирования и написания автоматизации.