如何检查我是否拥有32位或64位操作系统?


489

我从官方站点下载并安装了Ubuntu。但是,我不知道我安装的是32位还是64位版本。

在Windows 7中,我可以右键单击“ 我的电脑”,它列出了它的版本。

有没有一种简便的方法可以在Ubuntu中签入?






安装架构和内核架构是两回事。例如,我通过实现了debian multiarch支持,dpkg --add-architecture amd64amd64在32位Ubuntu 16.04中安装了一些软件包。现在,我可以使用64位内核运行32位安装,而不会出现问题。因此,在dpkg --print-architecture打印时i386,会uname -m打印x86_64。请参阅wiki.debian.org/Multiarch/HOWTO(这是一个棘手的过程)
肯恩

Answers:


629

我至少知道两种方式。打开一个终端(Ctrl+ Alt+ T)并输入:

  1. uname -a

    32位Ubuntu的结果:

    Linux discworld 2.6.38-8-generic#42-Ubuntu SMP Mon Apr 11 03:31:50 UTC 2011 i686 i686 i386 GNU / Linux

    而64位Ubuntu将显示:

    Linux discworld 2.6.38-8-generic#42-Ubuntu SMP Mon Apr 11 03:31:50 UTC 2011 x86_64 x86_64 x86_64 GNU / Linux

    短版:

    $ uname -i
    x86_64
    

    要么

  2. file /sbin/init

    32位Ubuntu的结果:

    / sbin / init:ELF 32位 LSB共享对象,英特尔80386,版本1(SYSV),动态链接(使用共享库),用于GNU / Linux 2.6.15,已剥离

    而对于64位版本,它看起来像:

    / sbin / init:ELF 64位 LSB共享对象,x86-64,版本1(SYSV),动态链接(使用共享库),用于GNU / Linux 2.6.15,已剥离

    与使用systemd(16.04)的系统相同:

    file /lib/systemd/systemd

    64位结果:

    / lib / systemd / systemd:ELF 64位 LSB共享对象,x86-64,版本1(SYSV),动态链接,解释器/lib64/ld-linux-x86-64.so.2,用于GNU / Linux 2.6。 32,BuildID [sha1] = 54cc7ae53727d3ab67d7ff5d66620c0c589d62f9,已剥离

11
由“嗅探”广泛可用的可执行文件的(二进制)内容组成的方法2是非常间接且笨拙的。尽管它适用于大多数设置,但仅存在 64位可执行文件不应成为检测正在运行的 OS体系结构的可靠方法。特别是当你考虑multiarchia32_libs并,特别是在你的init例子,upstart
MestreLion

8
您可能是对的,但是方法1向我显示了i68632或64的输出都没有显示给我
Aleks 2014年

6
@aleks是32位(请参见突出显示的文本:`i686 i686 i386`)
Rinzwind 2014年

它是32位,我使用了第二种方法,但是第一种方法没有显示任何类似i386::的东西,但是您的回答有所帮助。非常感谢
Aleks 2014年

1
# file /sbin/init- /sbin/init: symbolic link to upstart'` - # file /sbin/upstart-/sbin/upstart: ELF 64-bit LSB shared object, x86-64...
Nakilon

142

带有Unity的Ubuntu 12.04+

  • 按下Command(mac)或Window键。
  • 键入Details,然后选择“详细信息”图标
  • 阅读“操作系统类型”字段
  • 64位操作系统将读取“ 64位”

在此处输入图片说明

获得上述屏幕的替代方法:

  • 单击系统菜单(齿轮位于右上角)
  • 点击“关于这台计算机”

我知道终端响应很好,但是我想这是GUI的答案。:)

带有Unity的Ubuntu 11.04

  • 按下Command(mac)或Window键。
  • 键入System info,然后选择系统信息图标
  • 阅读“操作系统类型”字段
  • 64位操作系统将读取“ 64位”

14
+1:对于习惯于Windows的用户,GUI方式比终端命令更可取,特别是要求一种简单的方式。
MestreLion

1
另外,另一种到达同一屏幕的(GUI)方法:System Menu (top right corner, near the clock) -> System Settings -> Details
MestreLion 2013年

最简单的方法就是牢记:请运行旧版Ubuntu的任何人提供与您的GUI相当的工具!特别是对于Lucid Lynx(由于LTS支持到2015年,因此很可能会在人们的手掌式笔记本电脑上运行。)
JP

1
@JP:对于较旧的Ubuntu,例如Lucid Lynx,我知道最简单的GUI方式是Gnome的System Monitor。其System选项卡显示了体系结构。
MestreLion

1
GUI窗口很漂亮,但是想想如果您在没有安装GUI的情况下运行服务器版本,会不会想一会儿呢?
克里斯

79

一个非常简单快捷的方法是:

打开终端,输入以下内容,然后按Enter

getconf LONG_BIT

结果数(在我的情况下为64)就是答案。

终端-getconf LONG_BIT


7
在我的32位系统上,这也给出了正确的答案。在各种答案中列出的所有命令中,此命令的输出是最简单的。
Stephen Ostermiller

例外:$ getconf LONGBIT getconf:无法识别的变量“ LONGBIT”
Auspex

1
您错过了下划线@Auspex LONG_BIT
Michael

@Michael Damn,我也是。我不知道该如何管理,并且在过去的一个月中将这两台计算机升级到了64位,现在已经很麻烦了;-)谢谢,无论如何!
Auspex


27

打开终端并尝试arch命令。如果其输出为x86_64,则为64位。如果显示i686,i386等,则为32位。

但是,确定体系结构的最佳方法是运行arch命令并搜索输出。


11
archuname -m(甚至在手册中有说明)相同。;-)
htorque 2010年

在我的计算机(Ubuntu 9.04)上,arch命令似乎不存在。所以我想说uname -m更可靠。
乔纳森·斯特恩伯格

@JonathanSternberg:它是几个月后添加的,由的相同作者开发uname并包含在同一coreutils软件包中。因此从Ubuntu 10.04开始,这两个命令都可用。
MestreLion

21

dpkg --print-architecture 命令将显示您是否已安装32位或64位Ubuntu OS。

在64位系统上

$ dpkg --print-architecture
amd64          

在32位系统上

$ dpkg --print-architecture
i386

`


6
到目前为止,正确检测运行64位内核的32位OS的唯一方法。
Dan Garthwaite 2014年

8

架构检查器

在此处输入图片说明

下载链接

  1. 下载它
  2. 提取它。
  3. 标记文件Architecture Checker.sh Executable并运行它。

脚本基本上是这样的:

#!/bin/bash
ARCH=$(uname -m)
if [ "$ARCH" = "i686" ]; then
 zenity --info --title="Architecture Checker" --text="Your Architecture is 32-Bit"
fi
if [ "$ARCH" = "x86_64" ]; then
 zenity --info --title="Architecture Checker" --text="Your Architecture is 64-Bit"
fi

这将需要在可执行文本文件中,并且zenity将需要安装。


8
老实说需要下载并解压缩那8行文件吗?只需将其放在此处的代码块中即可。
kiri

并且当的输出uname -m不是i686...的好用时zenitynotify-send虽然可以使用。
2014年

5

转到系统设置,然后在系统部分下,单击详细信息。您将获得所有详细信息,包括操作系统,处理器以及系统运行的是64位还是32位版本。


太好了 但是我不知道如何“进入系统设置”。(顺便说一句)我正在使用12.4 MATE。
帕普

3

打开Ubuntu软件中心并搜索lib32。如果显示任何结果,则表明您正在执行64位安装(结果是用于在64位安装上运行32位应用程序的兼容性库)。

这不是一个更好的答案,但至少不需要终端... ;-)

编辑

我发现了一个更简单的方法:打开“帮助”->“关于Mozilla Firefox”,您将在此处看到它; ;-)

在底部,显示“用户代理字符串”,例如在我的64位系统上:

Mozilla/5.0 (X11; U; Linux x86_64; nl; rv:1.9.2.12) Gecko/20101027 Ubuntu/10.10 (maverick) Firefox/3.6.12

或在我的32位系统上:

Mozilla/5.0 (X11; U; Linux i686; nl; rv:1.9.2.12) Gecko/20101027 Ubuntu/10.10 (maverick) Firefox/3.6.12

x86_64是64位,i686是32位

(但这仍然不是应该存在的答案;))


2
当然,纯图形用户界面,但它是一个非常脆弱的...包中包含名称(或描述)的包,lib32肯定不是检测体系结构的可靠方法。
MestreLion


1

据我所记得,可以在32位系统上安装x86_64内核。就像一些人在这里写的那样,您应该查看系统上具有哪些库/已安装了哪些软件包。因此,最安全的查看方法是检查您是否拥有/lib64以及是否与/lib

另一种可能的方法是检查下载了哪些软件包/var/cache/apt/archive。如果它们包含_amd64.deb,则它是一个64位系统,即,如果您已安装软件包并且尚未清除缓存。

所有这些都可以从Konqueror / Dolphin中完成,只需指向并单击或:

ls -la / |grep lib

1

您应该记住,在安装32位内核时,您可能拥有64位CPU。即,如果您的CPU是64,则并不意味着您的操作系统是64,这取决于您所安装的软件。

man uname

   -m, --machine
          print the machine hardware name

   -p, --processor
          print the processor type or "unknown"

   -i, --hardware-platform
          print the hardware platform or "unknown"

因此,要获得使用的硬件平台uname -muname -p或者uname -i要获得内核类型,最好是发出getconf LONG_BIT命令。

检查这个SO 问题


与这个问题实际上没有关系:他一个64位CPU,想知道安装了哪个OS。
Auspex

0

在Synaptic或Software Center中查看您的软件资源。如果您尚未删除原始来源,例如cdrom,它将(?)指示体系结构。这是一个GUI,但不会说“ 32bit”或“ 64bit”。


-1

我不确定您所说的32位操作系统。

具体来说,我的内核和桌面发行版是64位Debian / Sid,但我通常使用schrootdeboostrapchroot-ed环境中运行-ed 32位Debian (出于测试目的)。

您是否认为我的32位环境应该称为32位(我相信是这样)或64位(毕竟,它确实在64位内核中运行)。在这样的环境uname -mi686,所有库和可执行文件和进程是32位。

出于实际目的uname -m应该足够了。该file命令可以告诉您ELF可执行文件是32位还是64位。

请参阅Linux特定的personality(2)系统调用(以及uname(2)一个)。

通过以下方式可以看到有关处理器的硬件信息:

 cat /proc/cpuinfo

在我的桌面64位系统和32位schroot环境中,其输出是相同的。


4
-1:您添加了很多不必要的混乱,而没有添加任何有用的新信息。为什么要说“不确定32位操作系统”?这是一个非常简单的问题,您知道的。您的chroot示例毫无意义:它类似于虚拟机,因此如果您使用32位OS引导它,则当然uname -m会输出i686。但“主”仍然是64位,而uname -m会说,所以如果你在chroot环境之外运行它
MestreLion

2
同样,/proc/cpuinfo它具有误导性:它显示的是CPU 功能,而不是实际安装(和运行)的OS体系结构。过去5年中出售的几乎所有台式机CPU都是64位,但这 与问题完全无关。当然,在两种情况下它都报告相同,因为您的CPU 硬件相同,并且能够运行32位和64位OS。
MestreLion

@ MestreLion,Basile试图说的是,在某些情况下,例如,当使用LXC或时chroot,您可以运行带有64位内核的纯32位系统。在这些情况下uname,您将了解到64位的内核体系结构,而其他方法将告诉您32位的用户级体系结构,尚不清楚两者中的哪一个是“ the”体系结构。
乔尼

@Joni:好的,我了解。但这是一个极端的案例,当然不是OP的案例。
MestreLion

可能不是OP的情况,我只是想澄清一下Basile试图提出的观点(而且,看起来我早先的用来纠正答案的编辑被拒绝了吗?在这种环境下,uname -m将输出内核的体系结构x86_64,而不是i686。 )
乔尼
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.