如何从命令行获取Linux版本

时间:2020-02-23 14:30:33  来源:igfitidea点击:

介绍

给定最低版本的Linux系统,我们如何知道正在使用的发行版和发行版?这是一个至关重要的问题。首先,我们可能考虑执行uname -a,但这不能提供我们可能需要的所有信息。幸运的是,几乎所有发行版都有一个文件保存该宝贵数据。

这是/etc/os-release文件。我们可能会猜到该如何查看,因为我们之前已经介绍过cat命令的用法。因此,我们只需执行以下操作,便会愉快地拥有所需的内容。

$cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.2 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.2 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

另一方面,uname提供以下系统信息:

-a,全部按以下顺序打印所有信息,省略-p和-i(如果未知):
-s,kernel-name打印内核名称
-n,nodename打印网络节点主机名
-r,kernel-release打印内核版本
-v,内核版本-打印内核版本
-m,机器打印机器硬件名称
-p,处理器打印处理器类型(非便携式)
-i,硬件平台打印硬件平台(非便携式)版本输出uname版本信息和exit
-o,操作系统(主要输出GNU/Linux)

一致用法的示例

$uname -o                                                                                                    
GNU/Linux

$uname -m                                                                                                    
 x86_64

$uname -r
 4.15.0-54-generic

$uname -s                                                                                                    
 Linux

$uname -a
 Linux cloudstack 4.15.0-54-generic #58-Ubuntu SMP Mon Jun 24 10:55:24 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

如上所示,使用uname命令无法找到发行版和发行版。

使用lsb_release命令

在基于Debian的Linux发行版上,我们可以使用lsb_release命令来打印发行版特定的信息。

可用选项:

-v, --version: Show the version of the LSB against which your current installation is compliant.
-i, --id:  Display the distributor's ID.
-d, --description: Display a description of the currently installed distribution.
-r, --release: Display the release number of the currently installed distribution.
-c, --codename: Display the code name of the currently installed distribution.
-a, --all: Display all of the above information.
-s, --short: Use the short output format for any information displayed.  This format omits the leading header(s).
-h, --help: Show summary of options.

请参阅下面的用法示例。

$lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 10 (buster)
Release:	10
Codename:	buster

$lsb_release -c
Codename:	buster

$lsb_release -d
Description:	Debian GNU/Linux 10 (buster)

$lsb_release -i
Distributor ID:	Debian

使用hostnamectl命令

对于具有Systemd init的Linux系统,我们可以从hostnamectl命令输出中获取一些系统信息,例如操作系统,内核版本和CPU体系结构。

theitroad@localhost:~# hostnamectl 
    Static hostname: debian10
          Icon name: computer-vm
            Chassis: vm
         Machine ID: 2e5ced54e5274424b2165b459a18372a
            Boot ID: e21975d65c53409497466bfbce9cc193
     Virtualization: kvm
   Operating System: Debian GNU/Linux 10 (buster)
             Kernel: Linux 4.19.0-5-amd64
       Architecture: x86-64

请参阅以下可用选项的完整列表:

$hostnamectl  --help
hostnamectl [OPTIONS...] COMMAND ...

Query or change system hostname.

  -h --help              Show this help
     --version           Show package version
     --no-ask-password   Do not prompt for password
  -H --host=[theitroad@localhost]HOST  Operate on remote host
  -M --machine=CONTAINER Operate on local container
     --transient         Only set transient hostname
     --static            Only set static hostname
     --pretty            Only set pretty hostname

Commands:
  status                 Show current hostname settings
  set-hostname NAME      Set system hostname
  set-icon-name NAME     Set icon name for host
  set-chassis NAME       Set chassis type for host
  set-deployment NAME    Set deployment environment for host
  set-location NAME      Set location for host

See the hostnamectl(1) man page for details.

检查/etc/issue内容

查看/etc/issue上的内容。

$cat /etc/issue
Debian GNU/Linux 10 \n \l