it-swarm.asia

كيف يمكنني معرفة إصدار Linux الذي أستخدمه؟

هل هناك طريقة لتحديد ما هو الإصدار (التوزيع وإصدار kernel ، أفترض) لنظام Linux (من سطر الأوامر) ، والذي يعمل على أي نظام Linux؟

204
Daryl Spitzer

يتم اكتشاف النواة عالمياً باستخدام 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

خلاف ذلك ، فإن الطريقة الأقرب المتاحة على نطاق واسع هي فحص ملفات /etc/something-release. هذه موجودة على معظم المنصات المشتركة ، وعلى مشتقاتها (على سبيل المثال ، ريد هات و CentOS).

وهنا بعض الأمثلة.

يحتوي Ubuntu على /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)

جنتو:

$ cat /etc/gentoo-release
Gentoo Base System release 1.12.11.1

ليس لدي نظام SUSE متاح حاليًا ، لكنني أعتقد أنه /etc/SuSE-release.

يحتوي Slackware على /etc/slackware-release و/أو /etc/slackware-version.

ماندريفا لديه /etc/mandriva-release.

لمعظم التوزيعات الشعبية بعد ذلك ،

$ cat /etc/*{release,version}

سوف تعمل في معظم الأحيان. تم تجريده من الأسفل وقد لا تحتوي تثبيتات "الخادم" المجردة على حزمة "إطلاق" للتوزيع المثبت.

بالإضافة إلى ذلك ، فإن برنامجين تابعين لجهة خارجية يمكنك استخدامها للحصول على هذه المعلومات تلقائيًا هما Ohai و و/- Facter .

لاحظ أن العديد من التوزيعات تحتوي على هذا النوع من المعلومات في /etc/issue أو /etc/motd ، ولكن بعض سياسات الأمان و أفضل الممارسات تشير إلى أن هذه الملفات يجب أن تحتوي على شعارات إعلام الوصول.

ذات صلة: كيفية معرفة إصدار حزمة البرامج المثبتة على العقدة؟ ، دمية .

264
jtimberman

يمكنك أيضًا تجربة:

$ cat /etc/issue

سيخبرك عادةً (وليس دائمًا) بالتوزيع الذي تستخدمه. /etc/issue هو الملف المستخدم لشاشة تسجيل الدخول.

39
Pablo Santa Cruz

نواة: uname -a

20
raspi
cat /etc/os-release

كحد أدنى لأوبونتو ، فيدورا و OpenSUSE.

لا يعمل لنظام التشغيل X على الأقل حتى 10.9 (مافريكس). استخدم sw_vers بدلاً من ذلك.

كان OpenSUSE cat/etc/SuSE-release up حتى 13.1 لكن تم إهماله لصالح إصدار os.

Redhat 6.1 لديه cat/etc/redhat-release

15
sweetfa

lsb_release -a ، عند توفرها ، مفيد.

14
CesarB

عثرت cat /proc/version على Red Hat على VPS مشترك.

12
iono

نواة: uname -r

Distro: lsb_release -a

سوف تعمل هذه على معظم أنظمة Linux

6
Albert Z.

أونيلينير

lsb_release -a && uname -r
5
Serge Stroobandt

هذه يمكن أيضًا حل المشكلةاستخدام Python باستخدام الوحدة النمطية 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و سيتم ستتم إزالته في Python 3.8.

1
simhumileco