如何检查Linux的32位/ 64位内核

VJS*_*VJS 7 linux linux-kernel archlinux

我需要编写一个bash脚本,我必须检查Linux内核是32位还是64位.

我正在使用uname -a命令,它给了我x86_64的结果.但我相信我不能以通用方式使用它,因为如果某些人使用非x86架构,结果可能会有所不同.

如何检查Linux的32位/ 64位内核?

jør*_*sen 16

问题是:您打算通过了解自己是32岁还是64岁来实现目标?在假设的128位环境中会产生什么后果?那些实际上正在测试N位的部分是什么?CPU可能支持以64位模式运行,但环境为32位.此外,环境本身可能是混合模式; 考虑运行具有32位用户空间的64位内核(在少数经典RISC上完成).然后,如果用户空间不是同质的比特/可执行格式怎么办?这就是为什么getconf LONG_BIT使用同样毫无意义,因为它取决于它是如何编译的.

$ /rt64/usr/bin/getconf LONG_BIT
64
$ /usr/bin/getconf LONG_BIT
32
$ file /usr/bin/getconf /rt64/usr/bin/getconf
/usr/bin/getconf:      ELF 32-bit MSB executable, SPARC32PLUS, V8+ Required, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.4, not stripped
/rt64/usr/bin/getconf: ELF 64-bit MSB executable, SPARC V9, relaxed memory ordering, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.4, not stripped
$ uname -m
sparc64
Run Code Online (Sandbox Code Playgroud)


Job*_*Job 5

您可以在系统中查询a的大小long int:

getconf LONG_BIT
Run Code Online (Sandbox Code Playgroud)

但我不确定这是否可以完全移植到所有不同的架构.


小智 -2

grep 查找 uname 输出中的“64”

uname -a | grep 64 
Run Code Online (Sandbox Code Playgroud)

  • 如果内核被编译了 64 次,这将导致误报。如果服务器名称是“blade64A”,则同上。 (2认同)