当我输入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位?
这在编写配置脚本时很有用,例如:我为什么体系结构构建?
当我输入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位?
这在编写配置脚本时很有用,例如:我为什么体系结构构建?
当前回答
该系统是32位的。uname中的iX86意味着它是32位体系结构。如果它是64位的,它会返回
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
其他回答
简单的脚本获得64位或32位
if $(getconf LONG_BIT | grep '64'); then
echo "64 bit system"
else
echo "32 bit system"
fi
Getconf使用最少的系统调用:
$ strace getconf LONG_BIT | wc -l
253
$ strace arch | wc -l
280
$ strace uname -m | wc -l
281
$ strace grep -q lm /proc/cpuinfo | wc -l
301
[-z ' uname -m | grep 64 '] && echo "32-bit" || echo "64-bit"
基于64位通常是x86_64, 32位是i686等等的事实。
$ grep "CONFIG_64" /lib/modules/*/build/.config
# CONFIG_64BIT is not set
命令
$ arch
等于
$ uname -m
但打字速度是原来的两倍