Команда uname в Linux: как получать информацию о системе

Команда uname — первый инструмент, к которому обращаются администраторы, разработчики скриптов и любопытные пользователи, когда нужно получить сведения о ядре и операционной системе. Она входит в состав GNU coreutils на большинстве дистрибутивов Linux и доступна в Unix-подобных системах.
Что такое команда uname
uname выводит базовую информацию об операционной системе и ядре в компактном формате. Название происходит от «Unix name», но реализация есть во многих ОС. В среде Windows аналогом по назначению считается команда ver в командной строке.
Базовый синтаксис:
uname [опции]Если вызвать uname без опций, выводится имя ядра:
$ uname
LinuxЧтобы получить всю доступную информацию в одной строке, используйте флаг -a (All):
$ uname -aВывод может выглядеть так:
Linux kali 5.10.0-kali7-amd64 #1 SMP Debian 5.10.28-1kali1 (2021-04-12) x86_64 GNU/LinuxРазбор полей в строке uname -a
Типичная строка содержит несколько полей, разделённых пробелами. Разберём каждое по порядку:
- Kernel name — имя ядра. Обычно “Linux”.
- Hostname — имя хоста системы, задаётся при установке или вручную.
- Kernel release — релиз ядра, например 5.10.0-kali7-amd64.
- Kernel version — версия/сборка ядра с номером сборки и датой, например “#1 SMP Debian 5.10.28-1kali1 (2021-04-12)”.
- Machine hardware name — архитектура CPU, например x86_64.
- Operating system — название пользовательской ОС, часто GNU/Linux.
Пример строки для анализа:
Linux kali 5.10.0-kali7-amd64 #1 SMP Debian 5.10.28-1kali1 (2021-04-12) x86_64 GNU/LinuxЕсли какая-то информация неизвестна системе, uname может опустить соответствующее поле вместо того, чтобы выводить “unknown”.
Вывод отдельных полей
Каждый ключевой фрагмент строки соответствует отдельному флагу. Часто полезно запрашивать только нужное поле.
- Kernel name: -s
- Hostname: -n
- Kernel release: -r
- Kernel version: -v
- Machine hardware name: -m
- Processor: -p
- Hardware platform: -i
- Operating system: -o
Примеры:
$ uname -o
GNU/Linux
$ uname -r
5.10.0-kali7-amd64
$ uname -m
x86_64Для получения справки и информации о версии используйте –help и –version:
$ uname --help
$ uname --versionuname (GNU coreutils) 8.32
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later .
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by David MacKenzie. Шпаргалка по часто используемым командам
- uname — только имя ядра
- uname -a — полная информация в одну строку
- uname -r — релиз ядра
- uname -v — версия/сборка ядра
- uname -m — архитектура машины
- uname -n — имя хоста
- uname -p — тип процессора (может быть неизвестно)
- uname -o — название ОС
Используйте их в скриптах, когда нужно адаптировать поведение под архитектуру или версию ядра.
Когда uname даёт неполный вывод и как это исправить
Важно понимать причины пустых или отсутствующих полей:
- Некоторые ядры или сборки не предоставляют информацию о платформе или процессоре — поле будет опущено.
- В контейнерах (Docker, LXC) hostname и другие поля могут быть настроены по-другому или ограничены.
- В кастомных сборках ядра метаданные о версии могут содержать минимальную информацию.
Как диагностировать проблему:
- Сравните вывод uname с /proc/version и /etc/os-release:
$ cat /proc/version
$ cat /etc/os-release- В контейнере проверьте настройки окружения и монтирования /proc.
- При необходимости соберите ядро с нужными конфигурациями или обновите пакеты дистрибутива.
Совместимость между системами
- На Linux uname из coreutils; на BSD и macOS реализация может отличаться по списку опций.
- В Windows нет uname; для похожей информации используется ver или PowerShell (Get-CimInstance Win32_OperatingSystem).
- Скрипты, использующие uname, стоит тестировать на целевых платформах и учитывать отсутствие некоторых флагов.
Чек-лист для ролей
Администратор:
- Проверить uname -a при сборе информации об инциденте.
- Сопоставить релиз ядра с установленными патчами.
Разработчик скриптов:
- Использовать uname -m для выбора бинарников по архитектуре.
- Явно обрабатывать возможный пустой вывод полей -p и -i.
QA-инженер:
- Убедиться, что скрипт корректно парсит строки uname на разных системах.
- Добавить тесты для контейнерных окружений.
Критерии приёмки для автоматизированных проверок
- Скрипт корректно определяет архитектуру (uname -m) на x86_64 и arm64.
- Скрипт не падает при пустом значении uname -p и логирует fallback.
- Для проверки версии ядра используется uname -r, и сравнение числовое устойчивое к суффиксам.
Пример простого парсера (bash):
arch=$(uname -m)
if [ "$arch" = "x86_64" ]; then
echo "64-bit"
else
echo "Другая архитектура: $arch"
fiПлан действий при подозрениях на несовместимость
- Сравните uname с /proc/version и /etc/os-release.
- Запустите uname в минимальном окружении (chroot или чистый контейнер).
- Проверьте версию coreutils: uname –version.
- Если требуется детальная информация о ядре, используйте dmesg, lscpu и dmidecode.
Примеры альтернативных подходов
- Для детальной информации о процессоре используйте lscpu или /proc/cpuinfo.
- Для идентификации дистрибутива полагайтесь на /etc/os-release.
- Для проверки модулей ядра используйте lsmod и modinfo.
Мини-методология для сбора диагностики системы
- uname -a — получить базовую строку.
- cat /etc/os-release — определить дистрибутив.
- lscpu и free -h — узнать архитектуру и память.
- dmesg | head — посмотреть сообщения ядра при старте.
Глоссарий одной строкой
- Ядро — программный компонент, управляющий ресурсами и аппаратурой.
- Релиз ядра — номер сборки ядра (uname -r).
- Архитектура — набор инструкций процессора, например x86_64.
Контроль безопасности и приватности
uname сам по себе не раскрывает чувствительных данных, но вывод может включать hostname и сборочные метки. Не публикуйте строки uname -a в открытых форумах, если в них содержатся служебные имена или внутренние метки сборки.
Частые ошибки и примеры, когда uname не подходит
- Ожидание подробной информации о ядре на уровне исходников — uname этого не даёт.
- Неправильный парсинг строки uname -a в скриптах, если в hostname есть пробелы или специальные символы.
- Сравнение версий как строк без нормализации (например “5.10” vs “5.10.0-kali7”) может дать ложные результаты.
Итог и рекомендации
- Для быстрого аудита системы используйте uname -a, а для задач скриптинга — отдельные флаги.
- Всегда проверяйте совместимость реализации uname на целевой платформе.
- При автоматизации обрабатывайте отсутствие полей и используйте дополнительные утилиты (lscpu, /etc/os-release) для надёжной информации.
Важно: не публикуйте строки uname -a с внутренними именами хостов в публичных отчетах.
Ключевые ссылки для чтения: проверьте man uname и файлы /proc/version и /etc/os-release на вашей системе.
Вывод: uname — компактный и быстрый инструмент для получения сведений о ядре и системе. Он не заменит специализированных утилит, но идеально подходит для скриптов и первичной диагностики.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента