在 Linux 上使用 sftdisk 建立分割區後等待內核

在 Linux 上使用 sftdisk 建立分割區後等待內核

我正在linux下用sfdisk建立一個分割區。創建分區後我想創建一個檔案系統。

由於 mkfs.ext3 找不到分割區而失敗:

echo ",,L" | sfdisk $DEVICE
mkfs.ext3 $PARTITION

但這有效:

echo ",,L" | sfdisk $DEVICE
sleep 1
mkfs.ext3 $PARTITION

我懷疑,在 udev 有機會創建設備節點之前,核心需要一些時間來更新其內部資料結構,或者我的腳本被再次調度。

如何準確等待設備節點建立?對於每個恆定時間,可能會有一個系統處於負載狀態,而該時間不夠。

答案1

如果您事先知道設備名稱,總有技術含量較低的解決方案:

while [ ! -e /dev/whatever ] ; do 
  sleep .1 # you can sleep for less than a second with coreutils sleep
  # optionally add a counter & timeout
done

答案2

後來,但總比沒有好。為了完整性。

udevadm settle --timeout=15 --exit-if-exists=$PARTITION

答案3

嘗試使用inotifywait(來自 inotify-tools)在設備節點上。目錄/dev

相關內容