簡體   English   中英

如何檢查磁盤上的分區以便在Linux中的腳本中使用?

[英]How to check a disk for partitions for use in a script in Linux?

我正在為Bash for Linux系統編寫腳本。 如何以健壯的方式檢查磁盤的分區?

我可以使用grepawksed來解析fdisksfdisk等的輸出,但這似乎不是一門精確的科學。

我還可以檢查/dev是否存在分區,但是分區也可能存在並且尚未被探測(作為示例,通過partprobe )。

你會推薦什么?

我想我找到了一個可靠的方法。 在閱讀手冊頁時,我偶然學到了partprobe更多功能:

-d     Don’t update the kernel.
-s     Show a summary of devices and their partitions.

一起使用,我可以在不更新內核的情況下掃描磁盤以獲取分區,並獲得可靠的解析輸出。 它仍在解析文本,但至少輸出不像fdisksfdisk那樣“面向人”。 這也是從磁盤讀取的信息,並不依賴於內核對此磁盤的分區狀態是最新的。

看一看:

在沒有分區表的磁盤上:

# partprobe -d -s /dev/sdb
(no output)

在具有分區表但沒有分區的磁盤上:

# partprobe -d -s /dev/sdb
/dev/sdb: msdos partitions

在具有分區表和一個分區的磁盤上:

# partprobe -d -s /dev/sdb
/dev/sdb: msdos partitions 1

在具有分區表和多個分區的磁盤上:

# partprobe -d -s /dev/sda
/dev/sda: msdos partitions 1 2 3 4 <5 6 7>

重要的是要注意,無論現有分區表或分區如何,每個退出狀態都為0。 另外,我還注意到這些選項不能組合在一起( partprobe -d -s /dev/sdb有效,而partprobe -ds /dev/sdb則沒有)。

另一種選擇是運行:

lsblk

請參閱https://unix.stackexchange.com/a/108951

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM