2008-11-05 31 views
18

Bazen Linux (veya belki de başka bir Unix benzeri SO) çalıştıran bazı sunuculara erişmem gerekiyor, ancak sunucuda hangi distribution kullanımda olduğunu bilmiyorum (orada) Sunucu için "sorumlu" kişinin bile bilmediği zamanlar).Linux dağıtımı kullanımda nasıl keşfedilir

Tüm bunların karşısında tek tip ve tutarlı olanı keşfetmenin kolay ve güvenilir bir yolu var mı?

+0

@Peter: "Dağıtım" ile "dağıtım" arasında değişiklik yapmanın gerçekten bir ihtiyacı var mıydı? –

cevap

-1

uname -a

0

Sen 'uname kullanabilirsiniz deneyin:

[[email protected] ~]$ uname -a 
Linux localhost 2.6.26-ARCH #1 SMP PREEMPT Tue Aug 26 21:15:43 UTC 2008 i686 AMD Athlon(tm) 64 Processor 3000+ AuthenticAMD GNU/Linux 
+1

uname sürümü ve mimariyi gösterir, ancak dağılımı değil (Red Hat, SuSE, Ubuntu, ....) –

+1

normalde dağıtım, örneğe dağılımı Arch Linux gibi bir versiyona ekler. Ve Arch için,/etc/issue dışındaki tüm diğer fikirler de işe yaramıyor. O zaman neden düşüş? – ypnos

0
uname -r 

şu anda (koşu çekirdek sürümünü yazdırmak gerekir, en azından, o ise bilmiyorum Linux için yapar Aynı * BSD veya diğerleri için). Bu, dağıtımla aynı değil, ancak çekirdek sürümü genellikle "2.6.27-gentoo-r1" ya da benzeri bir şey gibi özelleştirilmişse distro adını içerir.

Init genellikle önyükleme sırasında bir şey yazdırır, ancak çalışırken çok iyi değildir. Aksi halde bildiğim kadarıyla evrensel bir şey yoktur.

20
cat /etc/*release 

En dağılımları de lsb_release -a

Bazı tartışma mevcuttur (gibi /etc/redhat-release, /etc/gentoo-release, vs.) genellikle sürüm numarası vardır senin içinde dağıtım. Benim .cshrc yılında

1

Ben ksh/Bash kullanıcıları için

setenv DISTRO ` cat /proc/version | sed 's/.*(//' | sed 's/)).*//' ` 

var, bunu

export DISTRO=` cat /proc/version | sed 's/.*(//' | sed 's/)).*//' ` 

çevirir ve bu favori dağıtım için çalışmayabilir elbette tahmin. (Ben Oracle's Unbreakable Linux Redhat benzer bir şey vererek sorunlar vardı, ama benim amaçlar için yeterince iyi değildi.)

Güncelleme Ağustos 2016 Ben (2008 önce uzun bir süre bir süre bu şekilde Linux kullanmadıysanız). Şu an sahip olduğum sistemler için artık işe yaramıyor gibi görünüyor.

+0

Hideus 'cat x | sed y | sed z' tabiki daha iyi yazılmıştır 'sed -e y -e z x'. Ayrıca bkz. [Cat'ın yararsız kullanımı] (http://www.iki.fi/era/unix/award.html) – tripleee

6

Bu, sinir bozucu bir şekilde, göründüğünden daha zor bir sorundur.

Linux sistemleri için lsb_release kullanın.

$ lsb_release --all 
No LSB modules are available. 
Distributor ID: Ubuntu 
Description: Ubuntu 8.04.1 
Release:  8.04 
Codename:  hardy 
$ lsb_release -i 
Distributor ID: Ubuntu 

Bu, lsb_release'ın yalnızca Linux sürümleri için çalıştığı sınırlaması vardır.

Tüm Unix sistemleri için, üniteyi de ayrıştırabilirsiniz.

$ uname -a 
Linux blue-laptop 2.6.24-21-generiC#1 SMP Tue Oct 21 23:43:45 UTC 2008 i686 GNU/Linux 

Sen uname Wikipedia page de sistem ve dağılımları hakkında bilgi bulabilirsiniz.

+1

Daha dar bir şekilde, 'lsb_release' sadece Linux sistemlerinde [Linux Standardına uymayı deneyen sistemler üzerinde çalışır. Temel] (https://en.wikipedia.org/wiki/Linux_Standard_Base) özellikleri. – tripleee

1

/etc/issue'in genellikle kullanımdaki dağıtımla ilgili bir şeyleri olduğunu buldum.

Ancak tüm dağıtımlarda kullanılabilirliğini bilmiyorum.

+0

Ne yazık ki, pek çok dağıtımın çok azı/etc/issue var, sadece "Bu \ n. –

+0

Evet, Ubuntu üzerinde çalışıyor. "Ubuntu 16.04.1 LTS \ n \ l" aldım. Evet, \ n ve \ l değişmez (ASCII 13 ve 10 değil). –

3

Gerçekten hangi dağıtımın kullanıldığını bilmeniz gerekip gerekmediğini kendinize sormalısınız (belki de bu dağıtım için özel bir paket oluşturmak istediğiniz için). Diğer birçok durumda, ihtiyacınız olan özelliklerin olup olmadığını test etmek ve görmek için çok daha iyi bir fikir. Bu, çok daha fazla iş gibi görünebilir çünkü her özelliği tek tek test etmeniz gerekir, ancak bu şekilde yazılımınız çok daha esnek hale gelir.

+0

'configure' gibi bir şey yapar, ha? iyi bir nokta – Seiti

+0

Yupp, 'configure' veya CMake gibi bir şey: http://www.cmake.org/ – WMR

1

proc file system: Linux'ta tüm donanım düzeyi bilgileri içeren bir dizin. Dolayısıyla, sadece Orada

cd /proc/ 

sistem hakkında tüm keyfi bilgiler için bir metin dosyasında depolanan bilgilerin bir altın madeni bulacaksınız yazın.

+2

Yani' cat/proc/version' sürümü hakkında bilgi döndürecektir. – Henrik

+0

'cd/proc' tek başına kullanışlı bir şey yapmaz. Buradaki dosyaları okumak için bir dizine 'cd' yapmak zorunda değilsiniz ve normalde gerek duymamalı (etkileşimli bir kabukta olsa da, sizi uzun yollardan yazmanızı sağlar, ancak betikler genellikle CD'ye nadiren ihtiyaç duyar). – tripleee

+0

'proc'de birçok dosya C dizelerini kullanır, bu nedenle teknik olarak saf metin değildirler. Boş satırları yeni satırlarla değiştirmek için tr '\ 000' '\ 012' tripleee

0

Hangi dağıtımın kullanıldığını kontrol etmek için kullanabileceğiniz farklı komutlar vardır. Burada sadece 5 taneden bahsediyorum. -a

lsb_release lsb_relase

  1. dağıtım özgü bilgiler sağlar. Oysa -a, dağıtımla ilgili tüm bilgileri gösterir. Sadece açıklamayı gösteren -d'u da kullanabilirsiniz.

    1. 'uname -a

    uname da sistem bilgi sağlar. Oysa -a tüm bilgileri görüntüler. Diğer seçenekler için man uname'u kullanabilirsiniz.

    1. cat/etc/*

    Ayrıca vb klasördeki tüm spesifik salım bilgilerini yazdırmak için cat komutunu kullanabilirsiniz bırakın. Bu komut aslında lsb-release ve os-release dosyalarını /etc klasöründen okur.

    1. cat/etc/issue

    Bu komut den konu dosyasını okur/vb klasörü.

    1. kedi Bu komut /proc klasöründen versiyonu dosyasını okur

    /proc/version. /proc klasörü, sistem işlemi hakkında bilgi içerir.