Làm cách nào để biết tôi đang chạy Linux 32 hay 64 bit?


Câu trả lời:


37

"uname -m" là lệnh bạn đang tìm kiếm. Bạn có thể chạy cả 32 bit và 64 bit trên các bộ xử lý AMD và intel hiện đại, vì vậy "uname -p" sẽ không giúp ích gì cho bạn là không biết").

Tìm kiếm sự tồn tại của / usr / lib64 (như đã được đề xuất) cũng sẽ không giúp bạn, vì một số gói liên quan đến phần cứng và hệ thống sẽ cài đặt cả thư viện 32 bit và 64 bit để ở bên an toàn. Trên hệ thống (debian) của tôi, gói fakeroot làm điều đó.

Đối với đầu ra của "uname -m", nếu là i386 hoặc i686, nó là 32 bit, nếu là x86_64 (hoặc alpha, hoặc ia64 hoặc một số kiến ​​trúc 64 bit khác mà tôi chưa từng thấy :) đó là 64 bit.

(như một niềm vui sang một bên, máy chủ FreeBSD 64 bit của tôi trả về "amd64", điều này có thể hơi lạ đối với một quadcore intel nhưng hoàn toàn dễ hiểu nếu bạn biết lịch sử của kiến ​​trúc x86 64 bit)


1
điều này cho bạn biết kiến ​​trúc cài đặt hoặc kiến ​​trúc CPU thực tế. Ví dụ: nếu bạn đã cài đặt HĐH 32 bit trên cpu 64 bit, điều này sẽ trả về i686 hoặc x86_64?
monkut

15

uname -a và tìm x86_64. Nếu bạn muốn biết CPU của bạn có thể xử lý 64 bit, cat / Proc / cpuinfo và tìm lm trong các cờ.


3
mèo / Proc / cpuinfo | cờ grep ^ | perl -e '$ _ = <>; in "x86_64 \ n": "không phải x86_64 \ n"'
Brad Gilbert

6

cho 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-bit

  • i686 và / hoặc i386

64-bit

  • sẽ có x86_64 trong đầu ra uname -a

6

Chỉ cần nhầm lẫn mọi thứ, bạn có thể chạy kernel 64 bit với vùng người dùng 32 bit, đó là những gì tôi đang làm. Trong trường hợp này, uname -mtrả về x86_64nhưng tôi không cài đặt bất kỳ thư viện 64 bit nào nên hầu hết các chương trình 64 bit sẽ không chạy.

Vì vậy, một khi bạn kiểm tra uname, bạn cần phải tìm kiếm /lib64/ld-linux-x86-64.so.2, /lib64/libc-2.7.so/lib/ld-linux.so.2, /lib/libc-2.7.sođể xem liệu 64bit và 32bit thư viện có sẵn. Và để thực sự chắc chắn, hãy chạy các tệp đó và xem liệu chúng có thực thi chính xác không.

Một thông tin hữu ích khác là đầu ra của lsb_release -anó là phân phối chéo và sẽ báo cáo những mô-đun LSB dành riêng cho kiến ​​trúc nào có sẵn.


2
Thật không may lsb_release -a, không tạo ra kiến ​​trúc vùng người dùng
Joni


2

Một cách khác để làm điều đó là hỏi perl trình biên dịch cho biết kích thước của một số nguyên dài là:

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

so với

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

Hoặc, nếu bạn đã cài đặt gcc, tương tự trong 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

so với

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

:-)


Điều đó chỉ cho bạn biết phiên bản mặc định của perl làm gì ..
pjc50

@ pjc50: Và quan điểm của bạn là gì?
asjo

1
quan điểm của ông là bạn có thể có Perl 32 bit trên hệ thống 64 bit
niXar

@niXar: Tôi đoán điều đó là có thể, nhưng việc đó sẽ tạo ra sự ... phân phối Linux kỳ quặc. Dù sao, hãy sử dụng phiên bản C sau đó ;-)
asjo

1

Như một bản sao của:

Linux + cách xác minh phiên bản linux 32 Bit hoặc 64 Bit

uname -m sẽ chỉ cung cấp cho bạn 'arch' / architecture của kernel. Nó sẽ KHÔNG cho bạn biết nếu bạn đang chạy bản phân phối GNU / Linux 32 bit trên CPU có khả năng 64 bit.

Để biết khả năng CPU của bạn:

 cat /proc/cpuinfo

Cờ 'LM' phải có mặt trong các hệ thống 64 bit vì nó đại diện cho 'MODE DÀI' (Tiện ích mở rộng 64 bit, AMD64 của AMD hoặc EM64T của Intel).


0
$ uname -p

x86_64

2
"uname -p" trả về "athlon" trên hệ thống của tôi - không quá hữu ích ...
webwesen

3
Tôi đã chạy vào các máy mà tôi nhận được "ẩn số" từ uname -p ..
Cube_Zombie

0

Nếu bạn có / usr / lib64, bạn đang chạy x86_64 ..


3
mkdir / usr / lib128 && echo "Nhìn ma ', tôi có một máy tính 128 bit!"
niXar

0

Lệnh của Brad Gilbert có lỗi perl. Tôi đã sửa nó và lệnh dưới đây hoạt động: cat / Proc / cpuinfo | cờ grep ^ | perl -e '$ = <>; in ($ ? "x86_64 \ n": "không phải x86_64 \ n")'

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.