如何获取有关系统和磁盘分区的基本信息?
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-utils或coreutils包的一部分。因此,我们应该在几乎所有发行版中都能找到它。
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安装此实用程序。