Linux
Linux Distro name API 在驅動程式碼中獲取 linux 發行版的名稱?
我正在驅動程序中編寫一個通用程式碼來獲取發行版名稱和主機名。我從中獲取的主機名
struct utsname{nodename[]}
,但是如何獲取發行版名稱?
我見過的大多數程序和腳本都會解析 中的常用文件
/etc
,AFAIK 沒有其他方法:On Redhat, look for /etc/redhat-release On Debian, look for /etc/debian_version Mandriva has /etc/version and Slackware has /etc/slackware-version
您也可以使用
uname
來獲得ARCH
或者,可能是最理智的方式,使用lsb_release
.
你可以在這裡看看 facter 是如何做到的。
正如 Jan 所說, lsb_release 可能是最好的方法,但它不是你唯一的方法。例如,我的任何 RHEL 伺服器上預設不存在 lsb_release:
[damaya@damaya-sandbox script]$ lsb_release -bash: lsb_release: command not found [damaya@damaya-sandbox script]$ yum provides "*/lsb_release" redhat-lsb-core-4.0-7.el6.centos.i686 : LSB base libraries support for CentOS Repo : base Matched from: Filename : /usr/bin/lsb_release
因此,如果系統上不存在 lsb_release,那麼下一步就是從 /etc/*-release 文件中獲取資訊。但是,如果系統上也不存在這種情況,那麼您就不走運了。不幸的是,不存在 100% 可靠的方法來獲取此資訊。