Як дізнатися, чи працює я 32 або 64-бітний Linux?


Відповіді:


37

"uname -m" - це команда, яку ви шукаєте. На сучасних процесорах Intel та AMD ви можете запускати як 32-бітові, так і 64-бітні, тому "uname -p" вам не допоможе (крім того, в основному це не працює в наші дні. Тут Core2 вважає, що відповідь на "уні-р" є "невідомим").

Шукати існування / usr / lib64 (як було запропоновано) вам також не допоможе, оскільки деякі пакети, пов’язані з обладнанням та системою, встановлять як 32-бітові, так і 64-бітні бібліотеки, щоб вони були надійними. У моїй (debian) системі пакет fakeroot робить саме це.

Що стосується виходу "uname -m", якщо це i386 або i686, це 32-бітний, якщо це x86_64 (або альфа, або ia64 або якась інша 64-бітна архітектура, яку я ніколи не бачив :) - це 64 біт.

(як утіху, мій 64-бітовий сервер FreeBSD повертає "amd64", що може бути дещо дивним для Intel quadcore, але цілком зрозумілим, якщо ви знаєте історію 6486-бітової архітектури)


1
це говорить вам про архітектуру інсталяції або про фактичну архітектуру процесора. Наприклад, якби ви встановили 32-бітну ОС на 64-бітній процесор, це повернеться i686 або x86_64?
monkut

15

uname -a і шукайте x86_64. Якщо ви хочете дізнатися, чи може ваш процесор обробляти 64bit, cat / proc / cpuinfo та шукати lm у прапорах.


3
кішка / proc / cpuinfo | grep ^ прапори | perl -e '$ _ = <>; надрукувати "x86_64 \ n": "не 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 у unme -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, не виводиться архітектура userland
Joni


2

Ще один спосіб зробити це запитати perl, що компілятор сказав, що розмір великого цілого числа є:

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

vs.

$ 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

vs.

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

:-)


Це просто говорить вам про те, що робить версія за замовчуванням perl ..
pjc50

@ pjc50: А ваш погляд?
asjo

1
його сенс полягає в тому, що у вас може бути 32-бітний Perl в системі 64 біт
niXar

@niXar: Я думаю, що це можливо, але наявність цього може призвести до ... дивного розподілу Linux. У всякому разі, використовуйте версію C тоді ;-)
asjo

1

Як дублікат:

Linux + як перевірити версію Linux 32 біт або 64 біт

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

Щоб знати свої можливості процесора:

 cat /proc/cpuinfo

Прапор 'LM' повинен бути присутнім у 64-бітових системах, оскільки він являє собою 'ДОВГИЙ РЕЖИМ' (64-бітне розширення, AMD64 AMD або Intel EM64T).



0

Якщо у вас є / usr / lib64, ви працюєте x86_64 ..


3
mkdir / usr / lib128 && echo "Подивися ма", у мене 128-бітний комп'ютер! "
niXar

0

Команда Бреда Гілберта мала помилку. Я виправив це, і наведена нижче команда працює: cat / proc / cpuinfo | grep ^ прапори | perl -e '$ = <>; print ($ ? "x86_64 \ n": "не x86_64 \ n")'

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.