在linux上用sftdisk创建分区后等待内核

joh*_*nes 0 linux partitioning udev linux-kernel

我正在linux下用sfdisk创建一个分区。创建分区后,我想创建一个文件系统。

这会因 mkfs.ext3 找不到分区而失败:

echo ",,L" | sfdisk $DEVICE
mkfs.ext3 $PARTITION
Run Code Online (Sandbox Code Playgroud)

但这有效:

echo ",,L" | sfdisk $DEVICE
sleep 1
mkfs.ext3 $PARTITION
Run Code Online (Sandbox Code Playgroud)

我怀疑,在 udev 有机会创建设备节点之前,内核需要一些时间来更新它的内部数据结构,或者我的脚本再次被调度。

如何准确等待设备节点创建完成?对于每个恒定时间,可能有一个系统处于负载状态,而这个时间不够用。

Mat*_*vac 5

后来,但总比没有好。为了完整性。

udevadm settle --timeout=15 --exit-if-exists=$PARTITION
Run Code Online (Sandbox Code Playgroud)