Как я узнаю, что у меня 32-битная или 64-битная версия Linux?


Ответы:


37

"uname -m" - это команда, которую вы ищете. Вы можете запускать как 32-битные, так и 64-битные на современных процессорах Intel и AMD, так что «uname -p» вам не поможет (кроме того, в основном это не работает в наши дни, здесь Core2 считает ответ на «uname -p»). "неизвестно").

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

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

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


1
это говорит вам об архитектуре установки или фактической архитектуре процессора. Например, если вы установили 32-битную ОС на 64-битном процессоре, это вернет i686 или x86_64?
Monkut

15

uname -a и ищите x86_64. Если вы хотите знать, может ли ваш процессор обрабатывать 64 бита, cat / proc / cpuinfo и ищите lm в пределах флагов.


3
cat / proc / cpuinfo | grep ^ flags | perl -e '$ _ = <>; напечатать "x86_64 \ n": "not x86_64 \ n"'
Брэд Гилберт

6

для 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

Просто чтобы запутать вещи, вы можете запустить 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чтобы увидеть , имеются ли 64 - битные и 32 - битные библиотеки. И чтобы действительно убедиться, запустите эти файлы и посмотрите, правильно ли они работают.

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


2
К сожалению lsb_release -a, не выводит пользовательскую архитектуру
Joni


2

Еще один способ сделать это - спросить Perl, какой компилятор сказал, что размер длинного целого числа:

$ 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

:-)


Это просто говорит вам, что делает версия perl по умолчанию ..
pjc50

@ pjc50: А твоя точка зрения?
asjo

1
его смысл в том, что у вас может быть 32-битный Perl в 64-битной системе
niXar

@niXar: Полагаю, это возможно, но наличие этого сделало бы довольно ... странный дистрибутив Linux. В любом случае, тогда используйте версию C ;-)
asjo

1

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

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

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

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

 cat /proc/cpuinfo

Флаг «LM» должен присутствовать в 64-битных системах, поскольку он представляет «LONG MODE» (64-битные расширения, AMD64 или Intel EM64T).


0
$ uname -p

x86_64

2
«uname -p» возвращает «athlon» в моей системе - не слишком полезно ...
webwesen

3
Я столкнулся с машинами, где я тоже получаю «неизвестное» от uname -p ..
Cube_Zombie

0

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


3
mkdir / usr / lib128 && echo "Смотри, ма, у меня 128-битный компьютер!"
niXar

0

У команды Брэда Гилберта была ошибка perl. Я исправил это, и работает следующая команда: cat / proc / cpuinfo | grep ^ flags | perl -e '$ = <>; print ($ ? "x86_64 \ n": "not x86_64 \ n")'

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.