我正在制作一个简单的脚本来显示有关我的 CentOS 7 PC 的一些信息,类似于System Information
Windows 上的应用程序。
我想知道是否有一个命令可以显示我的虚拟磁盘的总容量和剩余容量?
目前,我知道df
我在此配置中使用的命令为我提供了剩余容量:
df -Ph | grep sda1 | awk '{print $4}' | tr -d '\n'
我也知道该lsblk
命令,它确实显示了我的虚拟磁盘的总大小。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 60G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 59G 0 part
├─centos-root 253:0 0 37G 0 lvm /
├─centos-swap 253:1 0 3.9G 0 lvm [SWAP]
└─centos-home 253:2 0 18.1G 0 lvm /home
sr0 11:0 1 1024M 0 rom
我还可以lsblk
通过以下方式过滤命令:lsblk -o NAME,SIZE
给出:
NAME SIZE
sda 60G
├─sda1 1G
└─sda2 59G
├─centos-root 37G
├─centos-swap 3.9G
└─centos-home 18.1G
sr0 1024M
我想知道如何过滤输出以仅显示60G
的容量sda
?
我对此一无所知,awk
但我看到它弹出了许多对类似问题的其他答复,所以也许这是我需要进一步研究的内容。
答案1
使用:
lsblk -no SIZE /dev/sda | head -1
带有lsblk -n
标题的将不会被打印。所以如果你运行:
lsblk -no SIZE /dev/sda
输出将是这样的:
970.5M
970.4M
第一个值970.5M
是 的总磁盘容量/dev/sda
。在本例中,它将head -1
仅获得输出的第一行970.5M
。另一个值是(在我的例子中)970.4M
的容量。/dev/sda1
lsblk -no PATH,NAME,SIZE /dev/sda
#Output:
/dev/sda sda 970.5M
/dev/sda1 └─sda1 970.4M
您可以使用上面的命令来指定任何分区。例如,如果我想获取有关的信息/dev/sda1
,/dev/nvme0n1p1
我应该使用:
lsblk -no PATH,NAME,SIZE /dev/nvme0n1p1 /dev/sda1
#Output:
/dev/sda1 sda1 970.4M
/dev/nvme0n1p1 nvme0n1p1 260M
关于你的问题:我如何只显示 sda3 的结果你可以使用这个:
lsblk -no SIZE /dev/sda3
答案2
要得到磁盘总容量您可能会发现有用的另一种方法是使用smartctl
.
例如:
smartctl --scan
smartctl --xall /dev/sda
# in my case a scan results in
Smartctl open device: /dev/sda failed: DELL or MegaRaid controller, please try adding '-d megaraid,N'
# therefore for me a smartctl -d megaraid,0 --all /dev/bus/0 shows
=== START OF INFORMATION SECTION ===
Vendor: TOSHIBA
Product: KPM5WRUG3T84
Revision: B322
Compliance: SPC-4
User Capacity: 3,840,755,982,336 bytes [3.84 TB]
Logical block size: 512 bytes
Physical block size: 4096 bytes
LU is resource provisioned, LBPRZ=1
Rotation Rate: Solid State Device
Form Factor: 2.5 inches
Logical Unit id: 0x58ce38ee20abca2d
Serial number:
Device type: disk
Transport protocol: SAS (SPL-3)
Local Time is: Wed Oct 12 14:26:53 2022 EDT
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
Temperature Warning: Disabled or Not Supported
Read Cache is: Enabled
Writeback Cache is: Enabled
=== START OF READ SMART DATA SECTION ===
SMART Health Status: OK
Percentage used endurance indicator: 4%
Current Drive Temperature: 29 C
Drive Trip Temperature: 70 C
Manufactured in week 33 of year 2019
Elements in grown defect list: 0
smartctl -d megaraid,0 --all /dev/bus/0 | grep Capacity | awk '{print $3}'
您可以3,840,755,982,336
使用的摘录。
检查man smartctl
有关如何使用 smartctl 选项而不是管道到 grep 和 awk 来完成这一切的选项。
但smartctl
不会告诉你已用或剩余容量,但我认为这将是获得可靠的总磁盘容量数的好方法。
另外,您lshw -class disk
可能lshw -short -C disk
会感兴趣:
lshw -short -C disk
H/W path Device Class Description
=========================================================
/0/2/0/2.0.0 /dev/sda disk 3840GB PERC H740P Adp {my one OS disk}
/0/2/0/2.1.0 /dev/sdb disk 19TB PERC H740P Adp {the 7 other disks as RAID-5 making 19tb volume I mount as /data}