2008-11-05 59 views
18

有時我需要訪問一些運行Linux的服務器(或者可能是另一個類似於Unix的服務器),但我不知道如何驗證服務器上正在使用哪個distribution(那裏是連服務器的「負責任」人都不知道的時代)。如何發現正在使用的Linux發行版

有沒有一種簡單可靠的方法來發現那種統一且一致的方法?

+0

@Peter:是否真的需要將'distro'改爲'distribution'? – 2013-06-19 13:59:34

回答

-1

嘗試uname -a

0

你可以用 'UNAME':

[[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顯示版本和體系結構,但不包括分發(Red Hat,SuSE,Ubuntu,...) – 2008-11-05 03:46:20

+1

通常情況下,該分發版本會添加到版本中,例如Arch Linux中的發行版本。對於Arch而言,除/ etc/issue之外的所有其他提及的想法都不適用。那麼爲什麼downvote? – ypnos 2008-11-06 07:50:06

0
uname -r 

應打印內核版本當前運行(至少,它爲Linux,不知道 如果它是* BSD或其他)相同)。這與發行版不一樣,但內核版本通常包含發行版名稱,如果它是自定義的,如「2.6.27-gentoo-r1」或其他。

初始化通常會在啓動時打印某些內容,但運行時並不好。

否則據我所知,沒有什麼是通用的。

20
cat /etc/*release 

大部分發行放釋放文件/etc/(如/etc/redhat-release/etc/gentoo-release等)通常具有的版本號您分發。

1

在我.cshrc我有

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

對於ksh/Bash用戶,我相信它轉化爲

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

,當然這可能不是你最喜歡的發行工作的。 (我有問題與Oracle's Unbreakable Linux給予類似紅帽的東西,但它是對我來說已經足夠好。)

更新2016年8月我沒有使用過的Linux這樣的一段時間(2008年是很久以前的事)。看來這對我現在的系統不再有用了。

+0

隱藏貓`貓x | sed y | sed z`當然更好寫成`sed -e y -e z x`。另請參見[無用的`cat`](http://www.iki.fi/era/unix/award.html) – tripleee 2016-07-28 06:36:42

6

這是令人討厭的,比它看起來更難的問題。

對於Linux系統,請使用lsb_release。

$ 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 

這具有lsb_release只適用於Linux發行版的限制。

對於所有的Unix系統,你也可以解析uname。

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

您可以在uname Wikipedia page找到關於系統和分佈的一些信息。

+1

更狹義地說,`lsb_release`只適用於試圖遵守[Linux Standard基地](https://en.wikipedia.org/wiki/Linux_Standard_Base)規範。 – tripleee 2016-07-28 06:39:21

1

我發現/ etc/issue通常有一些關於正在使用的分發的內容。

但我不知道它在所有發行版上的可用性。

+0

不幸的是,很多發行版都有一個非常小的/ etc/issue,它裏面只有「This is \ n。\ O(\ s \ m \ r)\ t」,它沒有提供關於發行版的真實信息。 – 2008-11-05 05:15:56

3

您應該問自己,您是否真的需要知道哪些發行版正在使用(可能是因爲您想要爲此發行版構建特定的包)。在許多其他情況下,這是一個好得多的想法,只需測試並查看您需要的功能是否存在。這可能看起來像更多的工作,因爲您必須逐個測試每個功能,但這樣,您的軟件變得更加靈活。

1

proc file system:Linux中包含所有硬件級別信息的目錄。所以只需鍵入

cd /proc/ 

在那裏你會發現存儲在文本文件中的所有關於系統的任意信息的信息的金礦。

0

您可以使用不同的命令來檢查正在使用的分配。這裏我只提到其中的5個。

  1. lsb_relase -a

lsb_release提供特定的分發信息。而-a顯示有關分配的所有信息。您也可以使用僅顯示說明的-d

  • UNAME -a

  • uname還提供系統信息。而-a顯示所有信息。其他選項可以使用man uname

  • 貓的/ etc/*釋放

  • 還可以使用cat命令從夾打印出所有特定的發佈信息。該命令實際上從/etc文件夾讀取lsb-releaseos-release文件。

  • 貓的/ etc /問題

  • 此命令讀取從問題文件/ etc文件夾。

  • 執行cat/proc /版本

  • 此命令讀取從/PROC文件夾中的版本文件。 /proc文件夾包含有關係統進程的信息。