システムとソフトウェアのアーキテクチャと一致するスクリプトの作成

システムとソフトウェアのアーキテクチャと一致するスクリプトの作成

次の点をクロスチェックするスクリプトを作成しようとしています。

1. インストールファイルのターゲットアーキテクチャ(32または64ビット)

2. システムアーキテクチャ。

2番目の部分は非常に簡単で、次のコマンドを使用して計算してから、lscpugrepとorの組み合わせを使用して特定の行を抽出できます。しかし、最初の部分は複雑であることが判明しました。 fileコマンドを試しましたが、出力は非常に不規則です。したがって、特定の列を抽出することは非常に困難になります。私も伝統的にこの種の仕事に使用されていませんでしたが、試してみました。ただし、期待どおりに制限のため、ほとんどのファイル形式を認識できません。awksedobjdump

スクリプトの残りの部分は非常に簡単です。値を比較し、意図した作業を続けます。上記の1番に関して助けを受けたいです。

編集する:

私のfileコマンドの問題を説明するためにいくつかの例を追加します。

$ file my_package_name.deb my_package_name.deb: Debian binary package (format 2.0)

$ file my_package_name.rpm my_package_name.rpm: RPM v3.0 bin i386/x86_64

上記の例はインストールファイルに関するものです。特定のスクリプトを実行するために実行すると、次の結果が表示されます。

$ file crclient O/P: crclient: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped

ご覧のとおり、私が得た出力はfileコマンドと非常に一致しません。したがって、その断片を抽出することは非常に複雑になります。

ベストアンサー1

64ビットCPUは32ビットまたは64ビットオペレーティングシステムをインストールできます。64ビットオペレーティングシステムを実行している場合は、一致する互換性ライブラリを使用して32ビットアプリケーションを実行できます。したがって、CPUだけを確認するわけではありません。〜しなければならない正解をお知らせします。

幸いなことに、このunameコマンドはあなたが望む多くのものを提供します。

uname -a
Linux parrot 2.6.32-5-amd64 #1 SMP Tue May 13 16:34:35 UTC 2014 x86_64 GNU/Linux

uname -m
x86_64

システムにインストールされているオペレーティングシステムの種類の明示的な説明を標準libcで確認できると思います。

file $(readlink -f /lib/libc.so* ) | grep -q x86-64 && echo x86-64 || echo x86-32

おすすめ記事