มีวิธีการตรวจสอบว่ารุ่นใด (รุ่นการกระจาย & เคอร์เนลฉันคิดว่า) ของ Linux กำลังทำงาน (จากบรรทัดคำสั่ง) ที่ทำงานบนระบบ Linux ใด ๆ ?
มีวิธีการตรวจสอบว่ารุ่นใด (รุ่นการกระจาย & เคอร์เนลฉันคิดว่า) ของ Linux กำลังทำงาน (จากบรรทัดคำสั่ง) ที่ทำงานบนระบบ Linux ใด ๆ ?
คำตอบ:
เคอร์เนลตรวจพบในระดับสากลด้วย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
แต่นโยบายความปลอดภัยและแนวทางปฏิบัติที่ดีที่สุดระบุว่าไฟล์เหล่านี้ควรมีแบนเนอร์แจ้งเตือนการเข้าถึง
ที่เกี่ยวข้อง: วิธีการค้นหารุ่นของแพคเกจซอฟต์แวร์ที่ติดตั้งบนโหนด? , หุ่นเชิด
คุณสามารถลอง:
$ cat /etc/issue
มันมักจะ (ไม่เสมอไป) จะบอกคุณว่าการกระจายที่คุณใช้ /etc/issue
เป็นไฟล์ที่ใช้สำหรับหน้าจอเข้าสู่ระบบ
\S[newline]Kernel \r on an \m
kernel: uname -a
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
lsb_release -a
มีประโยชน์เมื่อมี
cat /proc/version
พบฉัน Red Hat ใน VPS ที่แชร์
kernel: uname -r
distro: lsb_release -a
สิ่งเหล่านี้จะทำงานบนระบบ Linux ส่วนใหญ่
นี้ปัญหายังสามารถแก้ไขได้โดยใช้งูหลามกับ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
, และmachine
processor
หรือใช้dist()
ฟังก์ชั่น:
python -c 'import platform; print platform.dist()'
# ('debian', '9.6', '')
คำสั่งสุดท้ายพยายามที่จะตรวจสอบชื่อของชื่อการกระจาย Linux ระบบปฏิบัติการแต่มันก็เลิกตั้งแต่ Python 3.5และจะถูกลบออกในหลาม 3.8