Linux

從 UUID 獲取設備掛載點的有效方法

  • March 13, 2020

在我正在處理的腳本中,必須使用變數 UUID 來獲取設備所連接的目前掛載點。我想出的解決方案是這個:

UUID='fc70ae3d-65e7-4437-a371-b237c8ca3f56h'
MNTPNT=$(lsblk -o +UUID | grep ${UUID} | tr -s ' ' | cut -d ' ' -f 7)

執行命令後,變數 MNTPNT 按預期儲存目前掛載點。不過,這是一個相當廣泛的命令,我不禁想到必須有一種更有效的方法來實現相同的目標。

是否有可能提出更好的解決方案?主要是優化問題。提前感謝您的任何見解。

findmnt -noTARGET "/dev/disk/by-uuid/$UUID"

grep "$(stat -Lc '%#t %#T' "/dev/disk/by-uuid/$UUID" | xargs printf '%d:%d')" /proc/self/mountinfo

awk -v dev="$(stat -Lc '%#t %#T' "/dev/disk/by-uuid/$UUID" | xargs printf '%d:%d')" '$3~dev{print$5}' /proc/self/mountinfo

為了修剪綁定安裝:

awk -v dev="$(stat -Lc '%#t %#T' "/dev/disk/by-uuid/$UUID" | xargs printf '%d:%d')" '$3~dev&&$4=="/"{print$5}' /proc/self/mountinfo

請記住,設備可以安裝在多個位置。

怪物$(stat ... | xargs printf)只是因為stat(1)無法以十進制列印主要,次要數字。僅解析 的輸出ls -Hl可能會更好(並且更便攜)。

引用自:https://unix.stackexchange.com/questions/572792