Contents

如何获取有关系统和磁盘分区的基本信息?

1. 简介

对于管理任务,我们通常需要有关系统的详细信息。因此,在 Linux 案例中,关于内核版本和发行版的知识对我们来说是非常基础的。

此外,我们需要有关可用物理存储的信息。因此,在 Linux 上下文中,我们需要列出磁盘分区。

我们将查看有助于实现此目标的 Linux 命令。

2. 内核数据的uname命令

uname 命令返回一堆关于我们内核的信息。因此,让我们检查内核名称:

$ uname
Linux

2.1. uname的选项

我们应该使用选项来获取更具体的信息。因此,对于所有字段,让我们使用-a*开关:*

$ uname -a
Linux 10.0.2.15 5.14.10-300.fc35.x86_64 #1 SMP Thu Oct 7 20:48:44 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

现在,让我们用自己的开关检查每个与内核相关的信息。

因此,对于内核名称,让我们使用*-s*(或者什么都不用):

$ uname -s
Linux

然后,对于内核版本,让我们使用*-r*:

$ uname -r
5.14.10-300.fc35.x86_64

最后,对于内核版本,我们应该使用*-v*:

$ uname -v
#1 SMP Thu Oct 7 20:48:44 UTC 2021

请注意,与内核相关的数据只是在内核构建期间编译的。在运行时,它们是通过uname 系统调用获得的。

2.2. 可用性

该命令是sh-utilscoreutils包的一部分。因此,我们应该在几乎所有发行版中都能找到它。

3. 使用lsb_release分发信息

现在我们将使用lsb_release 命令了解 Linux 发行版的详细信息:

$ lsb_release -a
LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	Fedora
Description:	Fedora release 35 (Thirty Five)
Release:	35
Codename:	ThirtyFive

所以,我们看到我们的操作系统是 Fedora 35。

此外,让我们注意到该命令是围绕Linux 标准基础 (LSB) 概念构建的。

因此,对于符合 LSB 的发行版,该命令从*/etc/lsb-release/etc/distrib-release文件收集信息。此外,它还解析/etc/lsb-release.d*文件夹中的文件名。

但是,在我们的 Fedora 35 示例中,只有文件夹*/etc/lsb-release.d*存在。

在某些发行版中,该命令不是开箱即用的。它带有lsb_release包。

4. 解析os-release文件

我们可以通过解析/etc/os-release 文件的内容来达到和使用lsb_release类似的效果。所以,让我们*cat *吧:

$ cat /etc/os-release
NAME="Fedora Linux"
VERSION="35 (Workstation Edition)"
ID=fedora
VERSION_ID=35
VERSION_CODENAME=""
PLATFORM_ID="platform:f35"
PRETTY_NAME="Fedora Linux 35 (Workstation Edition)"
# more output skipped ...

现在,让我们更具体一点,在grep 的帮助下 只显示PRETTY_NAME

$ grep '^PRETTY_NAME' /etc/os-release
PRETTY_NAME="Fedora Linux 35 (Workstation Edition)"

此功能是systemd 管理器的一部分,因此我们应该在大多数 Linux 发行版中找到它。但是,并非所有字段都需要填写。

5. hostnamectl命令

**hostnamectl 命令管理系统的主机名。**它接受与系统不同功能相关的命令。

因此,使用status命令,我们将获得有关内核和发行版的信息:

$ hostnamectl status
   Static hostname: n/a
Transient hostname: 10.0.2.15
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 588ce19ba22340289d4e9f9ad3c5df63
           Boot ID: 5a4584a74a1f4b1596ac4b6d15c96e01
    Virtualization: oracle
  Operating System: Fedora Linux 35 (Workstation Edition)
       CPE OS Name: cpe:/o:fedoraproject:fedora:35
            Kernel: Linux 5.14.10-300.fc35.x86_64
      Architecture: x86-64
   Hardware Vendor: innotek GmbH
    Hardware Model: VirtualBox

尽管其他一些命令缩小了hostnamectl的输出,但没有人返回唯一的内核信息。

hostnamectl命令与systemd -services软件包一起提供。

6. 使用lsblk列出块设备

我们将使用lsblk 命令获取有关系统块设备的信息:

$ sudo lsblk -o NAME,KNAME,FSTYPE,MOUNTPOINT,SIZE
NAME   KNAME FSTYPE MOUNTPOINT   SIZE
sda    sda                      78,1G
├─sda1 sda1  ext2   /boot        1,5G
├─sda2 sda2                        1K
├─sda5 sda5  ext4   /            5,5G
├─sda6 sda6  ext4   /usr        12,5G
├─sda7 sda7  ext4   /home       54,7G
└─sda8 sda8  swap                  4G
sr0    sr0                      1024M

我们应该使用*-o*选项来提供我们想要显示的列名列表。在我们的示例中,我们使用了:

  • NAME – 设备名称
  • KNAME – 内部设备名称
  • FSTYPE – 文件系统的类型
  • MOUNPOINT – 设备的安装点
  • SIZE – 设备的大小

我们可以使用lsblk -h获取可用列的完整列表。

此外,我们可以使用*-b*开关将单位更改为字节。

**最后,我们不需要root权限来运行这个命令。**但是,如果没有root访问权限或sudo ,某些列将不可用,例如FSTYPE

该命令作为util-linux软件包的一部分分发。

7. 使用fdisk列出磁盘分区

让我们使用众所周知的fdisk 命令列出磁盘的分区:

$ sudo fdisk -l
Disk /dev/sda: 83.9 GB, 83886080000 bytes
255 heads, 63 sectors/track, 10198 cylinders, total 163840000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000031b3
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     3106815     1552384   83  Linux
/dev/sda2         3108864   163839999    80365568    5  Extended
/dev/sda5         3110912    14583807     5736448   83  Linux
/dev/sda6        14585856    40724479    13069312   83  Linux
/dev/sda7        40726528   155449343    57361408   83  Linux
/dev/sda8       155451392   163839999     4194304   82  Linux swap / Solaris

分区的大小以 512 字节块为单位。很遗憾,我们无法更改列表中显示的单位。

7.1. 以 GB 为单位获取分区大小

让我们显示分区详细信息,将其名称作为参数传递给fdisk

$ sudo fdisk -l /dev/sda7
Disk /dev/sda7: 58.7 GB, 58738081792 bytes
255 heads, 63 sectors/track, 7141 cylinders, total 114722816 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sda7 doesn't contain a valid partition table

这样,我们就可以读取以 GB 为单位的分区大小。

7.2. 安全备注和可用性

我们应该知道,提供分区列表只是fdisk功能的一小部分。 首先,它是一个创建、删除和修改分区的交互式工具。

因此,如果我们不小心调用了sudo fdisk /dev/sda(没有*-l*),那么我们会进入一个包含所有fdisk命令可用的 shell。

然后,如果我们不想更改分区表,我们应该键入q退出。

该命令包含在util-linux包中。

8. parted 应对大分区

另一个操作分区的命令是*parted *。因此,让我们显示通常的分区列表:

$ sudo parted -l
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 83,9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number  Start   End     Size    Type      File system     Flags
 1      1049kB  1591MB  1590MB  primary   ext2            boot
 2      1592MB  83,9GB  82,3GB  extended
 5      1593MB  7467MB  5874MB  logical   ext4
 6      7468MB  20,9GB  13,4GB  logical   ext4
 7      20,9GB  79,6GB  58,7GB  logical   ext4
 8      79,6GB  83,9GB  4295MB  logical   linux-swap(v1)

让我们注意,分区是由编号标识的,而不是由设备名称标识的。此外,尺寸用适当的单位整齐地格式化。

parted命令是一个类似于fdisk的交互式工具。

然而,它的显着特点是能够处理大于 2 TB 的分区。

我们需要从同名的包parted安装此实用程序。