Câu trả lời:
"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)
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ờ.
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 -m
trả về x86_64
như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
và /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 -a
nó 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.
lsb_release -a
, không tạo ra kiến trúc vùng người dùng
$> getconf LONG_BIT
Trả lời: 32 hoặc 64.
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
:-)
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).
$ uname -p
x86_64
Nếu bạn có / usr / lib64, bạn đang chạy x86_64 ..
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")'