当我输入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位?

这在编写配置脚本时很有用,例如:我为什么体系结构构建?


当前回答

命令

$ arch    

等于

$ uname -m

但打字速度是原来的两倍

其他回答

真不敢相信这么久以来,居然没人提过

sudo lshw -class cpu

查阅有关中央处理器硬件的速度、数量、大小和功能的详细资料。

在Bash中,使用整数溢出:

if ((1 == 1<<32)); then
  echo 32bits
else
  echo 64bits
fi

它比调用另一个进程或打开文件要高效得多。

首先你必须下载虚拟盒子。然后选择new和32位Linux。然后使用它引导linux。如果它启动,那么它是32位的,如果它不启动,那么它是64位的。

简单的脚本获得64位或32位

        if $(getconf LONG_BIT | grep '64'); then
           echo "64 bit system"
        else
            echo "32 bit system"
        fi

试试uname -m。它缺少uname——machine,输出:

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

否则,对于Linux内核,而是CPU,输入:

cat /proc/cpuinfo

or:

grep flags /proc/cpuinfo

在“flags”参数下,您将看到各种值:参见“/proc/cpuinfo中的flags是什么意思?” 其中一种是lm: Long Mode (x86-64: amd64,又称Intel 64,即64位)

lm ==> 64-bit processor

或者使用lshw(如下文由Rolf of Saxony所述),而不使用sudo(只是为了控制cpu宽度):

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

注意:你可以安装一个64位CPU和一个32位内核。 (正如ysdx在他/她自己的回答中提到的,“现在,一个系统可以是多拱的,所以它无论如何都没有意义。你可能想要找到编译器的默认目标”)