web-dev-qa-db-ja.com

どのバージョンのLinuxを実行しているのか、どうすればわかりますか?

どのバージョンのLinux(ディストリビューションとカーネルのバージョン)を(コマンドラインから)実行しているかを判断する方法はありますか。これはどのLinuxシステムでも機能しますか?

207
Daryl Spitzer

カーネルは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

そうでなければ、最も広く利用可能な方法は/etc/something-releaseファイルをチェックすることです。これらは、ほとんどの一般的なプラットフォーム上およびそれらの派生物(すなわち、Red HatおよびCentOS)上に存在する。

下記は用例です。

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を持っています。

Mandrivaは/etc/mandriva-releaseを持っています。

人気のあるディストリビューションのほとんどでは、

$ cat /etc/*{release,version}

ほとんどの場合うまくいきます。削除されたベアボーンの「サーバー」インストールには、ディストリビューション用の「リリース」パッケージがインストールされていない可能性があります。

また、この情報を自動的に取得するために使用できる2つのサードパーティプログラムは Ohai および Facter

多くのディストリビューションは/etc/issue/etc/motdにこの種の情報を持っていますが、いくつかのセキュリティポリシーと ベストプラクティス はこれらのファイルがアクセス通知バナーを含むべきであることを示します.

関連: ノードにインストールされているソフトウェアパッケージのバージョンを調べる方法?人形 .

265
jtimberman

あなたも試すことができます:

$ cat /etc/issue

それは通常(いつもではありませんが)どのディストリビューションを使っているかを教えてくれます。 /etc/issueはログイン画面に使用されるファイルです。

40

カーネル:uname -a

20
raspi
cat /etc/os-release

ubuntu、Fedora、OpenSUSEでは最低でも。

OS Xでは少なくとも10.9までは動作しません(Mavericks)。代わりにsw_versを使用してください。

OpenSUSEは13.1までcat/etc/SuSE-releaseを持っていましたが、os-のために廃止予定ですリリース。

Redhat 6.1にはcat/etc/redhat-releaseがあります。

15
sweetfa

可能であれば、lsb_release -aが便利です。

14
CesarB

cat /proc/versionは私に共有VPSでRed Hatを見つけました。

12
iono

カーネル:uname -r

ディストリビューション:lsb_release -a

これらはほとんどのLinuxシステムで動作します

6
Albert Z.

ワンライナー

lsb_release -a && uname -r
5

この問題は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', '')

上記のコマンド は、systemnodereleaseversionmachine、およびprocessorの6つの属性を含むnamedtuple()を返します。

あるいはdist()関数を使う:

python -c 'import platform; print platform.dist()'
# ('debian', '9.6', '')

最後のコマンド は、Linux OSディストリビューション名 を決定しようとしますが、 Python 3.5以降では非推奨です およびPython 3.8では削除されます).

1
simhumileco