Определяем битность системы Linux

Linux

Используем uname или arch.
Способ 1

Просто говорим arch. Если ответ i386 — то это 32 бита. Вместо тройки может быть 4, 5 или 6. Если ответ x86_64 — то это 64 бита. Если ответ ia64 — то это тоже 64 бита, процессор Intel Itanium или Intel Itanium 2.

[root@ololo ~]# arch
i686

Способ 2

man от uname как бы говорит нам, что опция:

-a, --all выводит всю подробную информацию
-m, --machine выводит сведения о типе компьютера
-p, --processor выводит тип процессора для данного компьютера
-i, --hardware-platform выводит сведения о платформе компьютера

Поэтому достаточно посмотреть на вывод uname -imp или uname -a:

  1. [root@ololo ~]# uname -imp
  2. i686 i686 i386
  3. [root@ololo ~]# uname -a
  4. Linux 2.6.18-194.26 #1 SMP Fri Dec 17 19:25:15 MSK 2010 i686 i686 i386 GNU/Linux

Способ 3

Тут даже без комментариев.

  1. [root@ololo ~]# getconf LONG_BIT
  2. 32

Способ 4

Наконец, можно просто посмотреть на битность бинарника ядра:

  1. [root@ololo32 ~]# file /boot/vmlinuz-`uname -r`
  2. /boot/vmlinuz-2.6.18-194.0.0.0.3.el5PAE: ELF 32-bit LSB shared object, Intel 80386, version 1, stripped
  1. [root@ololo64 ~]# file /boot/vmlinuz-`uname -r`
  2. /boot/vmlinuz-2.6.18-194.0.0.0.3.el5: ELF 64-bit LSB shared object, AMD x86-64, version 1, stripped

Битность процессора

Но 32-хбитная операционка не означает, что процессор не умеет набор 64-хбитных инструкций. Чтобы узнать, поддерживает ли процессор набор инструкций AMD64 или Intel EM64T, смотрим наличие флага lm (long mode) в строке флагов процессора в /proc/cpuinfo. Если флага lm нет — процессор 32-хбитный.

  1. [root@ololo ~]# grep ^flags /proc/cpuinfo | grep lm
  2. flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat
  3. pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx rdtscp lm constant_tsc
  4. nonstop_tsc pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm
Russian
Категория: 
The code has been tested and works
Мультитег: