Soluzione 1:
"uname -m" è il comando che stai cercando. Puoi eseguire sia a 32 bit che a 64 bit sui moderni processori Intel e AMD, quindi "uname -p" non ti aiuterà (inoltre per lo più non funziona in questi giorni, questo qui core2 pensa alla risposta a "uname -p" è "sconosciuto").
Anche cercare l'esistenza di /usr/lib64 (come è stato suggerito) non ti aiuterà, poiché alcuni pacchetti relativi all'hardware e al sistema installeranno entrambe le librerie a 32 bit e 64 bit per essere al sicuro. Sul mio sistema (debian) il pacchetto fakeroot fa proprio questo.
Per quanto riguarda l'output di "uname -m", se è i386 o i686 è a 32 bit, se è x86_64 (o alpha, o ia64 o qualche altra architettura a 64 bit che non ho mai visto :) è a 64 bit.
(a parte il divertimento, il mio server FreeBSD a 64 bit restituisce "amd64", che potrebbe essere un po' strano per un Intel quadcore ma del tutto comprensibile se conosci la storia dell'architettura x86 a 64 bit)
Soluzione 2:
uname -a e cerca x86_64. Se vuoi sapere se la tua CPU è in grado di gestire 64 bit, cat /proc/cpuinfo e cerca lm all'interno dei flag.
Soluzione 3:
per 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 e/o i386
64 bit
- avrebbe x86_64 in uname -a uscita
Soluzione 4:
Solo per confondere le cose, puoi eseguire un kernel a 64 bit con uno spazio utente a 32 bit, che è quello che sto facendo. In questo caso, uname -m
restituisce x86_64
ma non ho alcuna libreria a 64 bit installata, quindi la maggior parte dei programmi a 64 bit non funzionerà.
Quindi, una volta controllato uname, devi cercare /lib64/ld-linux-x86-64.so.2
, /lib64/libc-2.7.so
e /lib/ld-linux.so.2
, /lib/libc-2.7.so
per vedere se sono disponibili librerie a 64 e 32 bit. E per essere veramente sicuro, esegui quei file e controlla se vengono eseguiti correttamente.
Un'altra informazione utile è l'output di lsb_release -a
che è cross-distro e riporterà quali moduli LSB specifici dell'architettura sono disponibili.
Soluzione 5:
$> getconf LONG_BIT
Risposta:32 o 64.