32ビットLinuxと64ビットLinuxのどちらを実行しているかを知るにはどうすればよいですか?


回答:


37

「uname -m」は、探しているコマンドです。最新のIntelおよびAMDプロセッサで32ビットと64ビットの両方を実行できるため、「uname -p」は役に立ちません(さらに、最近ではほとんど機能しません。ここでは、core2は「uname -p」に対する応答を考えています。 「不明」です)。

一部のハードウェアおよびシステム関連のパッケージは安全のために32ビットと64ビットの両方のライブラリをインストールするため、(推奨されているように)/ usr / lib64の存在を探すことも助けにはなりません。私の(debian)システムでは、fakerootパッケージがまさにそれを行います。

「uname -m」の出力については、i386またはi686の場合は32ビット、x86_64(またはalpha、またはia64または私が見たことがない他の64ビットアーキテクチャの場合)は64ビットです。

(おもしろいことに、私の64ビットFreeBSDサーバーは "amd64"を返します。これはIntelクアッドコアにとっては少し奇妙かもしれませんが、x86 64ビットアーキテクチャの歴史を知っていれば完全に理解できるでしょう)


1
これにより、インストールアーキテクチャまたは実際のCPUアーキテクチャがわかります。たとえば、64ビットCPUに32ビットOSをインストールした場合、i686またはx86_64が返されますか?
monkut

15

uname -aでx86_64を探します。CPUが64ビットを処理できるかどうかを知りたい場合は、cat / proc / cpuinfoを実行し、フラグ内でlmを探します。


3
cat / proc / cpuinfo | grep ^ flags | perl -e '$ _ = <>; print "x86_64 \ n": "not x86_64 \ n"'
ブラッドギルバート

6

RedHat / CentOSの場合:

$ uname -a
Linux cs-centos 2.6.18-92.1.22.el5 #1 SMP Tue Dec 16 12:03:43 EST 2008 i686 athlon i386 GNU/Linux

32ビット

  • i686および/またはi386

64ビット

  • 持っているでしょうx86_64版は、uname -aの出力

6

混乱させるために、64ビットカーネルを32ビットユーザーランドで実行できます。これが私がしていることです。この場合、uname -m戻りますx86_64が、64ビットライブラリがインストールされていないため、ほとんどの64ビットプログラムは実行されません。

あなたがチェックはuname一度だから、あなたが探しする必要があり/lib64/ld-linux-x86-64.so.2/lib64/libc-2.7.soそして/lib/ld-linux.so.2/lib/libc-2.7.so64ビットと32ビットのライブラリが利用可能であるかどうかを確認するために。そして、本当に確認するために、それらのファイルを実行し、それらが正しく実行されるかどうかを確認してください。

もう1つの有用な情報は、lsb_release -aクロスディストリビューションの出力であり、使用可能なアーキテクチャ固有のLSBモジュールを報告します。


2
残念ながら、lsb_release -a出力ユーザランドのアーキテクチャない
ジョニ・


2

別の方法は、perlに長整数のサイズがどのようなものであると言っているかをperlに尋ねることです。

$ perl -MConfig -e 'print $Config{longsize}*8 . "\n";'
64

$ perl -MConfig -e 'print $Config{longsize}*8 . "\n";'
32

または、gccがインストールされている場合は、Cでも同じです:

$ cat > bits.c <<EOC
> #include <stdlib.h>
> #include <stdio.h>
> 
> int main(void) {
>    printf("%d\n", (int)sizeof(long)*8);
> 
>    exit(0);
> }
> EOC
$ gcc -Wall -o bits bits.c
$ ./bits
64

[...]
> EOC
$ gcc -Wall -o bits bits.c
$ ./bits
32

:-)


それはちょうどのperlのデフォルトのバージョンは...何をするかを説明します
pjc50

@ pjc50:そしてあなたのポイントは?
asjo

1
彼のポイントは、あなたが64ビットシステム上で32ビットPerlを持っている可能性があることです
niXar

@niXar:それは可能だと思いますが、そうすることはかなり奇妙なLinuxディストリビューションになります。とにかく、Cバージョンを使用してください;-)
asjo

1

の複製として:

Linux + Linuxバージョン32ビットまたは64ビットを確認する方法

uname -mは、カーネルの実行中の「アーキテクチャ」/アーキテクチャのみを提供します。64ビット対応のCPUで32ビットGNU / Linuxディストリビューションを実行しているかどうかはわかりません。

CPU能力を知るには:

 cat /proc/cpuinfo

'LM'フラグは、 'LONG MODE'(64ビット拡張、AMDのAMD64またはIntelのEM64T)を表すため、64ビットシステムに存在する必要があります。



0

/ usr / lib64がある場合、x86_64を実行しています。


3
mkdir / usr / lib128 && echo "Look ma '、128ビットのコンピューターがあります!"
niXar

0

Brad Gilbertのコマンドにはperlバグがありました。私はそれを修正し、以下のコマンドが機能します:cat / proc / cpuinfo | grep ^ flags | perl -e '$ = <>; print($? "x86_64 \ n": "not x86_64 \ n")'

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.