Практические примеры использования uname

Oct 27, 2016 09:58 · 286 words · 2 minute read uname

Порой необходимо быстро узнать подробности (версию или имя ядра, разрядность, имя хоста) используемого дистрибутива Linux. Давайте разберемся с практическим применением утилиты uname!

Синтаксис команды uname прост:

uname [OPTIONS]

Результат использования команды uname без параметров:

uname
Linux

Точно такой результат можно получить используя опцию -s:

uname -s
Linux

Для получения имени хоста нужно использовать опцию -n:

uname -n
db1

Чтобы получить информацию о релизе ядра используем опцию -r:

uname -r
3.16.0-4-amd64

Информацию о версии ядра можно увидеть с помощью опции -v:

uname -v
#1 SMP Debian 3.16.7-ckt25-2 (2016-04-08)

Тип (класс) используемого железа, (он же machine hardware name) -m:

uname -m
x86_64

Получить информацию о типе процессора можно с помощью опции -p. Если утилита не может прочесть эти данные, то возвращается «unknown»:

uname -p
unknown

Информацию о типе платформы можно получить используя опцию -i. Как и в предыдущем случае, если данные не получится прочесть, то будет выведено «unknown»:

uname -i
unknown

Для получения имени операционной системы используется опция -o:

uname -o
GNU/Linux

Вывести «все и сразу» можно с опцией -a:

uname -a
Linux db1 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-2 (2016-04-08) x86_64 GNU/Linux

В примерах выше утилита uname вернула «unknown» вместо информации о типе процессора и типе платформы. Одно из объяснений такого поведения может быть в том, что uname читает всю информацию из следующей структуры:

struct utsname {
               char sysname[];    /* Operating system name (e.g., "Linux") */
               char nodename[];   /* Name within "some implementation-defined
                                     network" */
               char release[];    /* OS release (e.g., "2.6.28") */
               char version[];    /* OS version */
               char machine[];    /* Hardware identifier */
           #ifdef _GNU_SOURCE
               char domainname[]; /* NIS or YP domain name */
           #endif
           };

Как видим, в этой структуре действительно отсутствует информация о типе процессора и типе платформы, поэтому утилита uname и возвращает «unknown».

tweet Share