Làm cách nào để biết phiên bản Linux nào tôi đang chạy?


209

Có cách nào để xác định phiên bản nào (phiên bản phân phối & kernel, tôi cho là) ​​của Linux đang chạy (từ dòng lệnh), hoạt động trên bất kỳ hệ thống Linux nào không?

Câu trả lời:


267

Hạt nhân được phát hiện phổ biến với uname:

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

Thực sự không có cách phân phối chéo nào để xác định phân phối và phiên bản nào bạn đang sử dụng. Đã có những nỗ lực để làm cho điều này phù hợp, nhưng cuối cùng nó thay đổi, thật không may. Các công cụ LSB cung cấp thông tin này, nhưng trớ trêu thay không được cài đặt theo mặc định ở mọi nơi. Ví dụ về hệ thống Ubuntu 9.04 với lsb-releasegói được cài đặt:

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

Mặt khác, phương pháp phổ biến gần nhất là kiểm tra tệp. Chúng tồn tại trên hầu hết các nền tảng phổ biến và trên các công cụ phái sinh của chúng (ví dụ, Red Hat và CentOS)./etc/something-release

Dưới đây là một số ví dụ.

Ubuntu có /etc/lsb-release:

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

Nhưng Debian có /etc/debian_version:

$ cat /etc/debian_version
5.0.2

Fedora, Red Hat và CentOS có:

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

Hiện tại tôi không có sẵn hệ thống SUSE, nhưng tôi tin là có /etc/SuSE-release.

Slackware có /etc/slackware-releasevà / hoặc /etc/slackware-version.

Mandriva có /etc/mandriva-release.

Đối với hầu hết các bản phân phối phổ biến sau đó,

$ cat /etc/*{release,version}

sẽ thường xuyên làm việc Cài đặt "máy chủ" bị tước và barebones có thể không có gói 'phát hành' cho bản phân phối được cài đặt.

Ngoài ra, hai chương trình của bên thứ 3 bạn có thể sử dụng để tự động nhận thông tin này là OhaiFacter .

Lưu ý rằng nhiều bản phân phối có loại thông tin này trong /etc/issuehoặc /etc/motd, nhưng một số chính sách bảo mật và thực tiễn tốt nhất cho thấy rằng các tệp này nên chứa các biểu ngữ thông báo truy cập.

Liên quan: Làm thế nào để tìm ra phiên bản của gói phần mềm được cài đặt trên nút? , .


3
Lol ở đây tôi đã suy nghĩ để đề nghị: tìm kiếm Giới thiệu!
Ivo Flipse

2
Slackware có / etc / slackware-phiên bản
Ken Keenan

Cảm ơn Ken, tôi cũng không có hệ thống slackware.
jtimberman

4
IOW: ls / etc / * {phát hành, phiên bản} và kiểm tra bất cứ điều gì quay trở lại ...
freiheit

1
Hầu hết cũng có / etc / vấn đề
Drew Stephens

41

Bạn cũng có thể thử:

$ cat /etc/issue

Nó thường (không phải luôn luôn, mặc dù) sẽ cho bạn biết phân phối bạn đang sử dụng. /etc/issuelà tập tin được sử dụng cho màn hình đăng nhập.


2
Đây là người duy nhất đóng đinh nó cho tôi trên một máy chủ Media Temple được chia sẻ. Cảm ơn!!
TryTryAgain

2
Ha, trên RedHat, đó chỉ là\S[newline]Kernel \r on an \m
ruffin 2/2/2015

20

Hạt nhân: uname -a


+1. Đối với các hệ thống tương tự, như MinGW , "-a" được yêu cầu để lấy thông tin phiên bản, ví dụ: "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

ở mức tối thiểu cho Ubuntu, Fedora và OpenSUSE.

Không hoạt động cho OS X ít nhất cho đến 10.9 (Mavericks). Sử dụng sw_vers thay thế.

OpenSUSE đã phát hành cat / etc / SuSE cho đến ngày 13.1 nhưng không được dùng để phát hành os.

Redhat 6.1 có cat / etc / redhat-phát hành




12

cat /proc/version tìm thấy tôi Red Hat trên một VPS được chia sẻ.


6

Hạt nhân: uname -r

Phân phối: lsb_release -a

Chúng sẽ chạy trên hầu hết các hệ thống Linux


5

Lót

lsb_release -a && uname -r

1
Điều này có thể thích hợp hơn khi bình luận về câu trả lời của Albert Z.
fixer1234

1
câu trả lời hùng mạnh để kết luận tất cả các câu trả lời! Tôi phải nỗ lực hết mình :)
B.Kocis 27/03/18

1

Đây vấn đề cũng có thể được giải quyết bằng Python với các platformmô-đun :

Sử dụng platform()chức năng:

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

Lệnh trên trả về một chuỗi xác định nền tảng cơ bản với càng nhiều thông tin hữu ích càng tốt.

Hoặc sử dụng uname()chức năng:

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

Các lệnh trên trả về một namedtuple()chứa sáu thuộc tính: system, node, release, version, machine, và processor.

Hoặc sử dụng dist()chức năng:

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

Lệnh cuối cùng cố gắng xác định tên của tên phân phối HĐH Linux , nhưng nó không được chấp nhận vì Python 3.5sẽ bị xóa trong Python 3.8 .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.