Bagaimana cara mengetahui versi Linux yang saya jalankan?

209

Apakah ada cara untuk menentukan versi apa (Linux & versi kernel, saya kira) yang dijalankan (dari command-line), yang berfungsi pada sistem Linux?

Daryl Spitzer
sumber

Jawaban:

267

Kernel terdeteksi secara universal dengan uname:

$ uname -or
2.6.18-128.el5 GNU/Linux

Sebenarnya tidak ada cara distribusi silang untuk menentukan distribusi dan versi apa yang Anda gunakan. Ada upaya untuk membuat ini konsisten, tetapi pada akhirnya itu bervariasi, sayangnya. Alat LSB memberikan informasi ini, tetapi ironisnya tidak diinstal secara default di mana-mana. Contoh pada sistem Ubuntu 9.04 dengan lsb-releasepaket diinstal:

$ lsb_release -irc
Distributor ID: Ubuntu
Release:        9.04
Codename:       jaunty

Jika tidak, metode terdekat yang tersedia luas adalah memeriksa file. Ini ada di sebagian besar platform umum, dan pada turunannya (yaitu, Red Hat dan CentOS)./etc/something-release

Berikut ini beberapa contohnya.

Ubuntu memiliki /etc/lsb-release:

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=9.04
DISTRIB_CODENAME=jaunty
DISTRIB_DESCRIPTION="Ubuntu 9.04"

Tapi Debian memiliki /etc/debian_version:

$ cat /etc/debian_version
5.0.2

Fedora, Red Hat dan CentOS memiliki:

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

Saya tidak memiliki sistem SUSE yang tersedia saat ini, tetapi saya percaya itu /etc/SuSE-release.

Slackware memiliki /etc/slackware-releasedan / atau /etc/slackware-version.

Mandriva punya /etc/mandriva-release.

Untuk sebagian besar distribusi populer,

$ cat /etc/*{release,version}

akan paling sering bekerja. Instalasi stripped down dan barebones "server" mungkin tidak memiliki paket 'rilis' untuk distribusi yang diinstal.

Selain itu, dua program pihak ke-3 yang dapat Anda gunakan untuk mendapatkan informasi ini secara otomatis adalah Ohai dan Facter .

Perhatikan bahwa banyak distribusi memiliki jenis informasi ini dalam /etc/issueatau /etc/motd, tetapi beberapa kebijakan keamanan dan praktik terbaik menunjukkan bahwa file-file ini harus mengandung spanduk pemberitahuan akses.

Terkait: Bagaimana mengetahui versi paket perangkat lunak yang diinstal pada node? , .

jtimberman
sumber
3
Lol di sini saya berpikir untuk menyarankan: mencari Tentang!
Ivo Flipse
2
Slackware memiliki / etc / slackware-version
Ken Keenan
Terima kasih Ken, saya juga tidak memiliki sistem slackware.
jtimberman
4
TKI: ls / etc / * {rilis, versi} dan periksa apa pun yang kembali ...
freiheit
1
Kebanyakan juga memiliki / etc / issue
Drew Stephens
41

Anda juga dapat mencoba:

$ cat /etc/issue

Biasanya (tidak selalu, akan memberi tahu Anda distribusi apa yang Anda gunakan. /etc/issueadalah file yang digunakan untuk layar masuk.

Pablo Santa Cruz
sumber
2
Ini adalah satu-satunya yang memakukannya untuk saya di server Media Temple bersama. Terima kasih!!
TryTryAgain
2
Ha, di RedHat, itu baru saja\S[newline]Kernel \r on an \m
ruffin
20

Inti: uname -a

raspi
sumber
+1. Untuk sistem serupa, seperti MinGW , "-a" diperlukan untuk mendapatkan informasi versi, misalnya, "MINGW32_NT-5.1 LAP065 1.0.17 (0.48 / 3/2) 2011-04-24 23:39 i686 Msys".
Peter Mortensen
15
cat /etc/os-release

minimal untuk Ubuntu, Fedora dan OpenSUSE.

Tidak bekerja untuk OS X setidaknya hingga 10.9 (Mavericks). Gunakan sw_vers sebagai gantinya.

OpenSUSE memiliki rilis cat / etc / SuSE hingga 13.1 tetapi sudah usang karena os-release.

Redhat 6.1 memiliki cat / etc / redhat-release

sweetfa
sumber
14

lsb_release -a, jika tersedia, berguna.

CesarB
sumber
12

cat /proc/version menemukan saya Red Hat di VPS bersama.

iono
sumber
6

Inti: uname -r

Distro: lsb_release -a

Ini akan berjalan di sebagian besar sistem Linux

Albert Z.
sumber
5

Satu garis

lsb_release -a && uname -r
Serge Stroobandt
sumber
1
Ini mungkin lebih tepat sebagai komentar atas jawaban Albert Z.
fixer1234
1
jawaban perkasa untuk menyimpulkan semua jawaban! Saya harus mendukung upaya ini :)
B.Kocis
1

Ini masalah juga dapat diselesaikan menggunakan Python dengan platformmodul :

Menggunakan platform()fungsi:

python -c 'import platform; print platform.platform()'
# Linux-4.9.0-8-amd64-x86_64-with-debian-9.6

Perintah di atas mengembalikan string tunggal yang mengidentifikasi platform yang mendasari dengan informasi yang berguna sebanyak mungkin.

Atau menggunakan uname()fungsi:

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', '')

Perintah di atas mengembalikan namedtuple()berisi enam atribut: system, node, release, version, machine, dan processor.

Atau menggunakan dist()fungsi:

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

Perintah terakhir mencoba untuk menentukan nama nama distribusi OS Linux , tetapi sudah usang karena Python 3.5 dan akan dihapus dalam Python 3.8 .

simhumileco
sumber