Linux カーネルが 32 ビットか 64 ビットかを確認する bash スクリプトを作成する必要があります。
uname -aコマンドを使用していますが、 x86_64の結果が得られます。ただし、x86 以外のアーキテクチャを使用している場合は結果が異なる可能性があるため、一般的な方法では使用できないと思います。
Linux の 32 ビット / 64 ビット カーネルを確認するにはどうすればよいですか?
Linux カーネルが 32 ビットか 64 ビットかを確認する bash スクリプトを作成する必要があります。
uname -aコマンドを使用していますが、 x86_64の結果が得られます。ただし、x86 以外のアーキテクチャを使用している場合は結果が異なる可能性があるため、一般的な方法では使用できないと思います。
Linux の 32 ビット / 64 ビット カーネルを確認するにはどうすればよいですか?
問題はむしろ、あなたが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
のサイズをシステムに照会できますlong int
。
getconf LONG_BIT
しかし、これがすべての異なるアーキテクチャに完全に移植できるかどうかはわかりません。
私は次のことを思いつきました。が使用されていることinit
(一部のディストリビューションは他のローダーに切り替えていますが、合理的に頻繁に使用されるもののリストを取得するのは簡単なはずです) であり、現在使用されてELF
いるa.out
. これらは、ほとんどのシステムにとって正しい仮定のように見えますが、おそらく組み込みシステムなどでは壊れている可能性があります。それでも、一般的な考え方は適応できるはずです (init
プロセスまたは同等のものを取得し、 を使用してそのビット数を確認しますfile
)。root として実行している場合は、ファイルのパスをたどる代わりに、使用できますfile $(sudo readlink -e /proc/1/exe)
(PID 1init
は、そのパスについて何かを想定するよりも移植性が高いでしょう)。
if file /sbin/init | fgrep 'ELF 64-bit' &>/dev/null; then
echo "64-bit"
else
echo "not 64-bit"
fi
/proc/cpuinfo で lm (ロング モード) フラグを検索します。これが当てはまる場合は、64 ビット プロセッサを使用していることを意味します。簡単な grep でこの情報が得られるはずです。
カーネルのバージョンに関しては、uname -a 情報をいつでも grep できます。悪意のあるホスト名による不一致を軽視できるように、uname プログラムのソースを見つけることをお勧めします。
探しているものに応じて、64 ビット proc に 32 ビットでインストールされたマシンがあります。私の場合、上記のすべてが 32 ビットを返します。
しかし、Ubuntu の lshw (lshw -c cpu) というハードウェアを見ると、cpu の説明から 64 ビット CPU が使用されていることが明確に示されているため、64 ビット バージョンの Ubuntu をインストールできたはずです。
/proc/cpuinfo は、lm フラグがロング モードを表すように、ハードウェアに関する優れた情報源でもあります。
良い1日を。ジャック。
uname 出力で '64' を grep する
uname -a | grep 64