Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

I am on Ubuntu and I did this command:

$ uname -a
Linux slabrams-desktop 2.6.32-29-generic #58-Ubuntu SMP Fri Feb 11 19:00:09 UTC 2011 i686 GNU/Linux

Does it mean I am on 32bit or 64 bit processor?

The reason I am trying to figure this out is that I was getting errors which looked like this:

cannot execute binary file

and from Googling, I thought it was a processor issue. Any ideas?

share|improve this question

migrated from serverfault.com Apr 26 '11 at 19:15

This question came from our site for system and network administrators.

4 Answers 4

up vote 14 down vote accepted

It means that you're running a 32-bit kernel, which means that you can only run 32-bit apps without the use of an emulator or virtualization.

If you want to see if your processor is 64-bit then look for lm in the flags listed in /proc/cpuinfo.

share|improve this answer
Also lscpu can be used, and is more friendly. –  enzotib Apr 26 '11 at 19:31
@Ignacio So I have a 32-bit processor which will need to run something which is made for 64-bit. Is that at all possible? –  Genadinik Apr 26 '11 at 19:31
I'm not Ignacio, but generally it's not. You could install a VM using a product that lets you emulate an 64-bit system o a 32-bit platform, though. –  Eduardo I. Apr 27 '11 at 5:58

You can use lscpu.

someuser@somelaptop:~$ lscpu
Architecture:          i686           # <-- your kernel is 32 bit
CPU op-mode(s):        32-bit, 64-bit # <-- your cpu can handle 32 or 64 bit instructions
CPU(s):                4
Thread(s) per core:    2
Core(s) per socket:    2
CPU socket(s):         1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 37
Stepping:              5
CPU MHz:               1199.000
Virtualisation:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              3072K

Further explanation of the Architecture field:

X86, i686, or i386      means you are running a 32 bit kernel.
X86_64 , amd64 , or X64 means you are running a 64 bit kernel.
share|improve this answer
@slm: the architecture field refers to the kernel not the processor. I edited my answer to make it more clear. –  Eric Johnson Jun 3 '13 at 10:20

You can also check the architecture of the binary you're trying to run by using file: file filetocheck. It will mention either 32-bit or 64-bit.

share|improve this answer

uname -p give the architecture of the processor. If it gives x86_64, it means cpu is 64 bit.

share|improve this answer
This is not always right, tho. –  Braiam Feb 21 '14 at 3:12
@Braiam: Would be great if you could explain why. –  i08in Feb 21 '14 at 3:57
@Jobin: uname prints information regarding the running kernel, not the CPU. For example you can run a 32-bit kernel on a 64-bit CPU. –  Cristian Ciupitu Jun 18 '14 at 21:38

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.