どのLinuxシステムでも動作するLinuxのどのバージョン(ディストリビューションとカーネルバージョン、私が推測する)を実行している(コマンドラインから)を判断する方法はありますか?
どのLinuxシステムでも動作するLinuxのどのバージョン(ディストリビューションとカーネルバージョン、私が推測する)を実行している(コマンドラインから)を判断する方法はありますか?
回答:
カーネルは次のもので広く検出されuname
ます:
$ uname -or
2.6.18-128.el5 GNU/Linux
実際に、どのディストリビューションとバージョンを使用しているかを判断するためのクロスディストリビューションの方法はありません。これを一貫させる試みがありましたが、最終的には、残念ながら変化します。LSBツールはこの情報を提供しますが、皮肉なことにデフォルトではどこにもインストールされていません。lsb-release
パッケージがインストールされたUbuntu 9.04システムの例:
$ lsb_release -irc
Distributor ID: Ubuntu
Release: 9.04
Codename: jaunty
それ以外の場合、最も広く利用されている方法はファイルのチェックです。これらは、ほとんどの一般的なプラットフォームとその派生物(つまり、Red HatとCentOS)に存在します。/etc/something-release
下記は用例です。
Ubuntuには/etc/lsb-release
次のものがあります。
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=9.04
DISTRIB_CODENAME=jaunty
DISTRIB_DESCRIPTION="Ubuntu 9.04"
しかし、Debianには以下があります/etc/debian_version
。
$ cat /etc/debian_version
5.0.2
Fedora、Red Hat、CentOSには次のものがあります。
Fedora: $ cat /etc/fedora-release
Fedora release 10 (Cambridge)
Red Hat/older CentOS: $ cat /etc/redhat-release
CentOS release 5.3 (Final)
newer CentOS: $ cat /etc/centos-release
CentOS Linux release 7.1.1503 (Core)
Gentoo:
$ cat /etc/gentoo-release
Gentoo Base System release 1.12.11.1
現時点ではSUSEシステムを利用できませんが、そうだと思います/etc/SuSE-release
。
Slackwareには/etc/slackware-release
および/またはがあり/etc/slackware-version
ます。
マンドリバは持ってい/etc/mandriva-release
ます。
その後、ほとんどの一般的なディストリビューションでは、
$ cat /etc/*{release,version}
ほとんどの場合動作します。削除されたベアボーン「サーバー」インストールには、ディストリビューションの「リリース」パッケージがインストールされていない場合があります。
また、あなたがこの情報を自動的に取得するために使用できる2つのサードパーティ製のプログラムがありOhaiとFacter。
多くのディストリビューションでは、/etc/issue
またはにこの種の情報があります/etc/motd
が、一部のセキュリティポリシーとベストプラクティスでは、これらのファイルにアクセス通知バナーを含める必要があることに注意してください。
また試すことができます:
$ cat /etc/issue
通常は(常にではありませんが)使用しているディストリビューションを教えてくれます。/etc/issue
ログイン画面に使用されるファイルです。
\S[newline]Kernel \r on an \m
カーネル: uname -a
cat /etc/os-release
Ubuntu、Fedora、およびOpenSUSEの場合は少なくとも。
少なくとも10.9(Mavericks)まではOS Xで機能しません。代わりにsw_versを使用してください。
OpenSUSEには、13.1まではcat / etc / SuSE-releaseがありましたが、os-releaseを支持して廃止されました。
Redhat 6.1にはcat / etc / redhat-releaseがあります
この問題は、Python platform
モジュールを使用して解決することもできます。
platform()
機能を使用して:
python -c 'import platform; print platform.platform()'
# Linux-4.9.0-8-amd64-x86_64-with-debian-9.6
上記のコマンドは、基になるプラットフォームを識別する単一の文字列を、できるだけ多くの有用な情報とともに返します。
またはuname()
機能を使用して:
python -c 'import platform; print platform.uname()'
# ('Linux', 'debian', '4.9.0-8-amd64', '#1 SMP Debian 4.9.130-2 (2018-10-27)', 'x86_64', '')
上記のコマンドは、返すnamedtuple()
含む6つの属性を:system
、node
、release
、version
、machine
、とprocessor
。
またはdist()
機能を使用して:
python -c 'import platform; print platform.dist()'
# ('debian', '9.6', '')
最後のコマンドは、LinuxのOSディストリビューション名の名前を決定しようとしますが、それはされてはPython 3.5から非推奨とされるのPython 3.8で削除します。