it-swarm-vi.tech

Làm thế nào để làm đẹp

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?

207
Daryl Spitzer

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 gói lsb-release được cài đặt:

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

Mặt khác, phương thức có sẵn rộng rãi gần nhất là kiểm tra các tệp /etc/something-release. 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 (tức là Red Hat và CentOS).

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 rằng đó là /etc/SuSE-release.

Slackware có /etc/slackware-release và/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/issue hoặ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 chỉ ra 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? , con rối .

265
jtimberman

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/issue là tệp được sử dụng cho màn hình đăng nhập.

40
Pablo Santa Cruz

Hạt nhân: uname -a

20
raspi
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 đã có cat/etc/SuSE-release cho đến ngày 13.1 nhưng không được dùng để giải phóng os.

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

15
sweetfa

lsb_release -a, khi có sẵn, rất hữu ích.

14
CesarB

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

12
iono

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

6
Albert Z.

Lót

lsb_release -a && uname -r
5
Serge Stroobandt

Vấn đề này cũng có thể được giải quyết bằng cách sử dụng Python với mô-đun platform:

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

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 chức năng 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', '')

Lệnh trên trả về namedtuple() chứa sáu thuộc tính: system, node, release, version, machineprocessor.

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

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 dùng nữa vì Python 3.5 sẽ bị xóa trong Python 3.8 .

1
simhumileco