uname -m
memberikan i686 dan uname -m
memberikan output i686 i386 di mesin Red Hat Enterprise Linux Server rilis 5.4 (Tikanga). Saya perlu menginstal Oracle Database 10g Release 2 di mesin itu. Jadi, bagaimana saya bisa memutuskan apakah arsitektur kernel 32bit atau 64bit?
linux
command-line
x86
cpu-architecture
pengguna2914
sumber
sumber
uname -m
danuname -m
?uname -m
menunjukkan i? 86, Anda memiliki sistem 32-bit.getconf WORD_BIT
.getconf WORD_BIT
mengembalikan 32 pada Ubuntu 64-bit sayaJawaban:
i386 dan i686 keduanya 32-bit.
x86_64 adalah 64-bit
contoh untuk 64 bit:
EDIT:
Lihat apakah linux ARM 32 atau 64 bit saya? untuk ARM
sumber
uname -m
. Itu hanya akan menunjukkan arsitektur.Itu mudah! Gunakan
arch
perintah.sumber
arch
kembalii386
, tetapiuname -a
tampilx86_64
.@behrooz benar. Sayangnya
uname
mengharuskan Anda untuk mengetahui arsitektur. Sebenarnya, saya sedang mencari daftar arsitektur dan saya menemukan artikel ini yang menjawab pertanyaan Anda. Berkenaan denganuname -m
:Untuk menentukan apakah perangkat keras mampu menjalankan kernel 64-bit
Cari yang berikut ini di output (semua flag diambil dari jawaban stackoverflow ini untuk pertanyaan yang sama)
lm
flag berarti cpu mode Panjang - CPU 64 bittm
flag berarti Mode terlindungi - CPU 32-bitrm
flag berarti Real Mode - 16 bit CPUsumber
(EDIT: jawaban ini SALAH. Terima kasih atas komentar @ Lizardx)
Di Bash, menggunakan integer overflow:
Ini jauh lebih efisien daripada memanggil proses lain atau membuka file.
sumber
((
adalah Bashism dan tidak didefinisikan oleh POSIX mywiki.wooledge.org/Bashism#Conditionals((1<<32)-1)
Untuk Debian :
Di PC saya
Raspberry Pi 2 saya
sumber
checkinstall
, thx!Cara paling sederhana adalah menjalankan:
yang akan menghasilkan 64 atau 32 tergantung pada apakah itu 32 atau 64 bit.
misalnya:
sumber
getconf LONG_BIT
akan mencetak32
meskipun Anda menjalankan kernel 64 bit.gunakan syscap dari proyek Formake
syscap memungkinkan untuk menyelidiki banyak properti sistem dan menguji dependensi. Ini adalah skrip shell portabel.
Dapatkan arsitektur CPU:
Dapatkan nama dan versi kernel:
sumber
Cara lain adalah dengan memeriksa arsitektur beberapa file sistem dikompilasi, seperti
sumber
Atau Anda dapat menggunakan cara apa yang dilakukan perintah uname secara internal jika Anda ingin mengimplementasikan beberapa hal sendiri:
sumber
Berikut metode lain yang digunakan
uname
.Dari
man uname
:... -i, --hardware-platform print the hardware platform or "unknown" ...
# uname -i x86_64
#
sumber
Jika Anda mencari satu-liner sederhana, ini adalah solusi paling andal yang saya temukan yang mengembalikan 64 atau 32 . Tidak peduli apakah Anda menjalankan ARM atau tidak, dan itu harus bekerja pada sistem apa pun menggunakan bash atau sh .
Hati-hati, ini akan menganggap sistem 32-bit atau 64-bit. Lihat penjelasan saya di bawah ini jika Anda perlu mendeteksi arsitektur 8- 16- atau beberapa bit lainnya.
Apa yang terjadi di sini?
Logikanya sangat sederhana dan semuanya bermuara pada bagaimana komputer menyimpan bilangan bulat yang ditandatangani. Arsitektur 32-bit hanya memiliki 32 bit yang dapat digunakan untuk menyimpan bilangan bulat yang ditandatangani sementara arsitektur 64-bit memiliki 64 bit! Dengan kata lain, himpunan bilangan bulat yang dapat disimpan terbatas. Setengah dari himpunan ini mewakili angka negatif dan setengah mewakili angka positif. Bilangan bulat bertanda sama dengan -1 direpresentasikan sebagai angka terbesar yang dapat disimpan dalam jumlah bit tertentu untuk arsitektur itu. Pada sistem 32-bit, -1 dapat diwakili oleh nilai hex 0xFFFFFFFF (yang merupakan 32 bit biner, semua sama dengan 1). Pada sistem 64-bit, 0xFFFFFFFF diterjemahkan menjadi 4.294.967.295, basis 10 sedangkan 0xFFFFFFFFFFFFFFFF adalah representasi untuk -1). Anda dapat melihat bagaimana ini akan dengan mudah skala untuk sistem yang 8- atau 16-bit juga yang akan sama dengan -1 pada 0xFF dan 0xFFFF,
sumber