Πώς να προσδιορίσετε αν ένα συγκεκριμένο Linux είναι 32 bit ή 64 bit;

Όταν πληκτρολογώ uname -a, δίνει την ακόλουθη έξοδο.

Linux mars 2.6.9-67.0.15.ELsmp #1 SMP Tue Apr 22 13:50:33 EDT 2008 i686 i686 i386 GNU/Linux

Πώς μπορώ να ξέρω από αυτό ότι το συγκεκριμένο λειτουργικό σύστημα είναι 32 ή 64 bit;

Αυτό είναι χρήσιμο όταν γράφουμε σενάρια "ρυθμίσεων", για παράδειγμα: για ποια αρχιτεκτονική κατασκευάζω;

Λύση

Δοκιμάστε uname -m. Το οποίο είναι συντομογραφία του uname --machine και βγάζει:

x86_64 ==> 64-bit kernel
i686   ==> 32-bit kernel

Διαφορετικά, όχι για τον πυρήνα του Linux, αλλά για τη CPU, πληκτρολογείτε:

cat /proc/cpuinfo

ή:

grep flags /proc/cpuinfo

Κάτω από την παράμετρο "flags", θα δείτε διάφορες τιμές: βλέπε "Τι σημαίνουν οι σημαίες στο /proc/cpuinfo;&quot, Μεταξύ αυτών, μία ονομάζεται lm: Long Mode (x86-64: amd64, επίσης γνωστή ως Intel 64, δηλαδή ικανή για 64-bit)

lm ==> 64-bit processor

Ή χρησιμοποιώντας το lshw (όπως αναφέρεται παρακάτω από τον Rolf of Saxony), χωρίς sudo (μόνο για την αναζήτηση του πλάτους της cpu):

lshw -class cpu|grep "^       width"|uniq|awk '{print $2}'

Σημείωση: μπορείτε να έχετε μια CPU 64-bit με εγκατεστημένο πυρήνα 32-bit.
(όπως αναφέρει ο ysdx στη δική του/της απάντηση, "Στις μέρες μας, ένα σύστημα μπορεί να είναι multiarch οπότε δεν έχει νόημα ούτως ή άλλως. Ίσως να θέλετε να βρείτε τον προεπιλεγμένο στόχο του μεταγλωττιστή")

Σχόλια (13)

Αν τρέχατε μια πλατφόρμα 64 bit θα βλέπατε x86_64 ή κάτι πολύ παρόμοιο στην έξοδο από το [uname][1] -a

Για να λάβετε το συγκεκριμένο όνομα υλικού του μηχανήματός σας εκτελέστε

uname -m

Μπορείτε επίσης να καλέσετε

getconf LONG_BIT

η οποία επιστρέφει είτε 32 είτε 64

[1]: http://manpages.ubuntu.com/manpages/intrepid/man1/uname.html "uname&quot,

Σχόλια (6)

Αυτό το σύστημα είναι 32bit. iX86 στο uname σημαίνει ότι είναι αρχιτεκτονική 32-bit. Αν ήταν 64 bit, θα επέστρεφε

Linux mars 2.6.9-67.0.15.ELsmp #1 SMP Tue Apr 22 13:50:33 EDT 2008 x86_64 i686 x86_64 x86_64 GNU/Linux
Σχόλια (1)