ฉันจะรู้ได้อย่างไรว่าฉันใช้ Linux รุ่นใด


คำตอบ:


266

เคอร์เนลตรวจพบในระดับสากลด้วยuname:

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

ไม่มีวิธีการกระจายข้ามเพื่อกำหนดการกระจายและรุ่นที่คุณกำลังใช้อยู่ มีความพยายามที่จะทำให้สิ่งนี้สอดคล้องกัน แต่ท้ายที่สุดมันก็แตกต่างกันไปอย่างน่าเสียดาย เครื่องมือ LSB ให้ข้อมูลนี้ แต่ไม่ได้ติดตั้งโดยค่าเริ่มต้นทุกแห่ง ตัวอย่างบนระบบ Ubuntu 9.04 ที่lsb-releaseติดตั้งแพ็คเกจ:

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

มิฉะนั้นวิธีที่ใช้ได้อย่างกว้างขวางที่สุดคือการตรวจสอบไฟล์ สิ่งเหล่านี้มีอยู่บนแพลตฟอร์มทั่วไปส่วนใหญ่และในอนุพันธ์ (เช่น Red Hat และ CentOS)/etc/something-release

นี่คือตัวอย่างบางส่วน.

อูบุนตูมี/etc/lsb-release:

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

แต่เดเบียนมี/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}

ส่วนใหญ่จะทำงาน การติดตั้งลงและ "เซิร์ฟเวอร์" ที่เปลือยเปล่าอาจไม่มีแพ็คเกจ 'ปล่อย' สำหรับการติดตั้งการแจกจ่าย

นอกจากนี้ทั้งสองโปรแกรมของบุคคลที่ 3 คุณสามารถใช้เพื่อได้รับข้อมูลนี้โดยอัตโนมัติOhaiและFacter กั

โปรดทราบว่าการกระจายจำนวนมากมีข้อมูลประเภทนี้ใน/etc/issueหรือ/etc/motdแต่นโยบายความปลอดภัยและแนวทางปฏิบัติที่ดีที่สุดระบุว่าไฟล์เหล่านี้ควรมีแบนเนอร์แจ้งเตือนการเข้าถึง

ที่เกี่ยวข้อง: วิธีการค้นหารุ่นของแพคเกจซอฟต์แวร์ที่ติดตั้งบนโหนด? , หุ่นเชิด


3
ฮ่า ๆ ๆ นี่ฉันคิดจะแนะนำ: มองหาเกี่ยวกับ!
Ivo Flipse

2
Slackware มี / etc / slackware-version
Ken Keenan

ขอบคุณเคนฉันยังไม่มีระบบสแนปแวร์
jtimberman

4
IOW: LS / etc / * {ปล่อยรุ่น} และตรวจสอบสิ่งที่จะกลับมา ...
Freiheit

1
ส่วนใหญ่ยังมี / etc / ปัญหา
ดึงสตีเฟนส์

41

คุณสามารถลอง:

$ cat /etc/issue

มันมักจะ (ไม่เสมอไป) จะบอกคุณว่าการกระจายที่คุณใช้ /etc/issueเป็นไฟล์ที่ใช้สำหรับหน้าจอเข้าสู่ระบบ


2
นี่เป็นสิ่งเดียวที่จับมันสำหรับฉันบนเซิร์ฟเวอร์ Media Temple ที่แชร์ ขอบคุณ !!
TryTryAgain

2
ฮาบน RedHat นั่นเป็นเพียง\S[newline]Kernel \r on an \m
ruffin

20

kernel: uname -a


+1 สำหรับระบบที่คล้ายกันเช่นMinGWจำเป็นต้องใช้ "-a" เพื่อรับข้อมูลรุ่นตัวอย่างเช่น "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

อย่างน้อยสำหรับ Ubuntu, Fedora และ OpenSUSE

ไม่ทำงานสำหรับ OS X อย่างน้อยจนถึง 10.9 (Mavericks) ใช้sw_versแทน

OpenSUSE มีcat / etc / SuSE-releaseจนถึง 13.1 แต่เลิกใช้แล้วในความโปรดปรานของ os-release

Redhat 6.1 มีcat / etc / redhat-release






5

หนึ่งในสายการบิน

lsb_release -a && uname -r

1
นี่อาจเหมาะสมกว่าในฐานะความคิดเห็นในคำตอบของ Albert Z
fixer1234

1
คำตอบอันยิ่งใหญ่ที่จะสรุปคำตอบทั้งหมด! ฉันต้อง upvote สำหรับความพยายาม :)
B.Kocis

1

นี้ปัญหายังสามารถแก้ไขได้โดยใช้งูหลามกับ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()ที่มีคุณลักษณะที่หก: system, node, release, version, และmachineprocessor

หรือใช้dist()ฟังก์ชั่น:

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

คำสั่งสุดท้ายพยายามที่จะตรวจสอบชื่อของชื่อการกระจาย Linux ระบบปฏิบัติการแต่มันก็เลิกตั้งแต่ Python 3.5และจะถูกลบออกในหลาม 3.8

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.