Как я знаю, работаю ли я 32 или 64-разрядный Linux?

Debian.

  • Чистый и основной, специально для использования сервера
  • Широко поддерживаемый, который приводит к многочисленному сообществу пользователей позади него
  • Большая упаковочная система
  • Крупная библиотека совместимых репозиториев программного обеспечения
23
задан 17 June 2009 в 23:12
10 ответов

"uname-m" является командой, которую Вы ищете. Можно выполнить и 32 бита и 64 бита в современный Intel и процессоры AMD, таким образом, "uname-p" не собирается помогать Вам (кроме того, он главным образом не работает в эти дни, это здесь core2 думает, что ответ на "uname-p" "неизвестен").

Поиск существования/usr/lib64 (как был предложен) не собирается помогать Вам также, так как некоторые аппаратные средства и связанные с системой пакеты установят и библиотеки на 64 бита и на 32 бита, чтобы быть на безопасной стороне. В моей (debian) системе fakeroot пакет делает просто это.

Что касается вывода "uname-m", если это - i386 или i686, это - 32 бита, если это - x86_64 (или альфа, или ia64 или некоторая другая архитектура на 64 бита, я никогда не видел :) это - 64 бита.

(как забава в стороне, мой сервер FreeBSD на 64 бита возвращает "amd64", который мог бы быть немного странным для Intel, четырехъядерного, но полностью понятного, если Вы знаете историю x86 архитектуры на 64 бита),

37
ответ дан 28 November 2019 в 20:19

uname-a и ищут x86_64. Если Вы хотите знать, может ли Ваш ЦП обработать 64 бита, кошка/proc/cpuinfo и искать lm во флагах.

15
ответ дан 28 November 2019 в 20:19
  • 1
    кошка/proc/cpuinfo | grep ^flags | жемчуг-e' $ _ = < >; печать " x86_64\n":" не x86_64\n" ' –  Brad Gilbert 18 June 2009 в 00:39

для RedHat/CentOS:

$ uname -a
Linux cs-centos 2.6.18-92.1.22.el5 #1 SMP Tue Dec 16 12:03:43 EST 2008 i686 athlon i386 GNU/Linux

32-разрядный

  • i686 и/или i386

64-разрядный

  • имел бы x86_64 в uname-a выводом
6
ответ дан 28 November 2019 в 20:19

Только, чтобы перепутать вещи, можно выполнить ядро на 64 бита с пространством пользователя на 32 бита, которое является тем, что я делаю. В этом случае, uname -m возвраты x86_64 но у меня нет библиотек на 64 бита установленными, таким образом, большая часть программ на 64 бита не будет работать.

Таким образом, после того как Вы проверяете uname, необходимо искать /lib64/ld-linux-x86-64.so.2, /lib64/libc-2.7.so и /lib/ld-linux.so.2, /lib/libc-2.7.so видеть, доступны ли библиотеки на 32 бита и на 64 бита. И действительно удостоверяться, петляйте и посмотрите, выполняются ли они правильно.

Другая полезная информация является выводом lsb_release -a который является перекрестным дистрибутивом и сообщит, какие архитектурно-зависимые модули LSB доступны.

6
ответ дан 28 November 2019 в 20:19

Другой способ сделать это состоит в том, чтобы спросить жемчуг, в каком компиляторе было сказано, что размер длинного целого:

$ perl -MConfig -e 'print $Config{longsize}*8 . "\n";'
64

по сравнению с.

$ perl -MConfig -e 'print $Config{longsize}*8 . "\n";'
32

Или, если у Вас есть установленный gcc, то же в C:

$ cat > bits.c <<EOC
> #include <stdlib.h>
> #include <stdio.h>
> 
> int main(void) {
>    printf("%d\n", (int)sizeof(long)*8);
> 
>    exit(0);
> }
> EOC
$ gcc -Wall -o bits bits.c
$ ./bits
64

по сравнению с.

[...]
> EOC
$ gcc -Wall -o bits bits.c
$ ./bits
32

:-)

2
ответ дан 28 November 2019 в 20:19
  • 1
    Это просто говорит Вам, что делает версия по умолчанию жемчуга.. –  pjc50 27 October 2009 в 14:25
  • 2
    @pjc50: И Ваша точка? –  asjo 24 November 2009 в 01:21
  • 3
    его точка - то, что у Вас мог быть Perl на 32 бита в системе на 64 бита –  niXar 16 April 2010 в 12:49
  • 4
    @niXar: Я предполагаю, что это возможно, но наличие, которое сделало бы для вполне... нечетного дистрибутива Linux. Так или иначе используйте версию C затем ;-) –  asjo 4 May 2010 в 22:15
$ uname -p

x86_64
0
ответ дан 28 November 2019 в 20:19
  • 1
    " uname-p" возвраты " athlon" в моей системе - не слишком полезный... –  webwesen 17 June 2009 в 23:18
  • 2
    I' ve сталкиваются с машинами, где я получаю " unknown" от uname-p также.. –  Cube_Zombie 17 June 2009 в 23:36

Если у Вас есть/usr/lib64, Вы выполняете x86_64..

0
ответ дан 28 November 2019 в 20:19
  • 1
    mkdir/usr/lib128 & & эхо " Посмотрите ma' у меня есть компьютер на 128 битов! " –  niXar 16 April 2010 в 12:50

Команда Brad Gilbert имела ошибку жемчуга. Я зафиксировал его и ниже работ команды: кошка/proc/cpuinfo | grep ^flags | жемчуг-e '$ = <>; печать ($? "x86_64\n": "не x86_64\n")'

0
ответ дан 28 November 2019 в 20:19

$> getconf LONG_BIT Ответ: 32 или 64.

6
ответ дан 28 November 2019 в 20:19

Как дубликат:

Linux + как проверить версию Linux 32-битную или 64-битную

uname -m даст вам только работающую 'arch' / architecture ядра. Он НЕ сообщит вам, используете ли вы 32-битный дистрибутив GNU / Linux на 64-битном процессоре.

Чтобы узнать возможности вашего процессора:

 cat /proc/cpuinfo

Флаг 'LM' должен присутствовать в 64-битных системах, поскольку он представляет 'ДЛИННЫЙ MODE '(64-битные расширения, AMD AMD64 или Intel EM64T).

1
ответ дан 28 November 2019 в 20:19

Теги

Похожие вопросы