Linux

使用 blkid 檢查附加的 EBS 卷是否已格式化

  • July 15, 2019

我在嘗試檢查附加卷在格式化之前是否已格式化的部分腳本存在問題。

當使用 nvme 卷時卷未格式化時,此檢查中使用的 grep 返回零。這是因為 file -s 的輸出似乎是一長串字元:

Xs\333d8\374R\352if\253w}$\014\246E\034_I\275\304\2505!\3536U\336\252\274\252\323K\345\334\225;\356\0075T\350ru\003Kwp\353v:\326\263a\251\307\/\001Db\216

因此,grep 計數返回零,並且腳本假定磁碟已格式化,因為 if 語句假定計數為零,則它必須已格式化。

目前檢查是否為零:

file -s /dev/nvme | grep -c ': data$'

我想知道我是否可以安全地使用 blkid 但檢查以確保它大於零而不是零以確定卷是否已格式化:

blkid | grep -c /dev/nvme

您可以檢查特定設備的詳細資訊並據此採取行動:

blkid --match-token TYPE=ext4 /dev/nvme123 || mkfs.ext4 -m0 /dev/nvme123

這是做什麼的:

  1. blkid檢查是否/dev/nvme123ext4格式化,如果不是,則返回非零返回碼。
  2. 僅當第一個命令返回非零時,雙管道才會||執行第二個命令 ( )。mkfs.ext4如果第一個返回0,它將不會執行 mkfs。

希望有幫助:)

試試下面的東西

# for type in ext4 ext3 ext2 iso9660;do [[ `blkid |grep /dev/vdc|awk '{print $NF}'`  =~ TYPE=\"$type\" ]] && echo matched ;done

輸出

matched

列出預期的文件系統類型並檢查是否匹配,標記它並將其用於進一步處理。

引用自:https://serverfault.com/questions/975196