我有一个脚本应该重新格式化并安装/dev/disk/by-label/backup_disk
到/mnt/backup_disk
.像这样:
/sbin/mkfs.ext4 -q -L backup_disk /dev/disk/by-label/backup_disk
mount -t ext4 /dev/disk/by-label/backup_disk /mnt/backup_disk -o noatime,data=writeback
bash 输出是:
mount: special device /dev/disk/by-label/backup_disk does not exist
但执行后,如果我在终端上输入:
mount /dev/disk/by-label/backup_disk /mnt/backup_disk/
安装一切正常,没有任何错误。
使用脚本时出现错误是什么原因?
编辑:解决了像评论中建议的那样添加几秒钟的睡眠。
答案1
您可能应该执行某种延迟循环(具有最大迭代次数),休眠 1 秒,然后检查该目录/dev/disk/by-label/backup_disk
现在是否存在。以下应该可以工作,但您可能需要对其进行调试。
#!/bin/bash
set -o errexit
set -o unset
$DIRECTORY=/dev/disk/by-label/backup_disk
# do your reformat here
until [ -d "$DIRECTORY" ]; do
sleep 1
done
# now continue with the mount and other operations...
我喜欢写东西防御性 bash 脚本。这就是两个“set -o”语句的用途。
您还可以添加一个计数器来跟踪您经历了多少次循环,然后在 30/60/90 秒后突破。
答案2
您应该给操作系统几秒钟的时间来实际检测新格式化的分区是否可用。从一个开始
sleep 10
在 with 行之前mount ..
(如果您不想在运行脚本时等待那么长时间,则可以减少它)。