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)
您可以在系统中查询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)