다음과 같이 /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
배쉬 출력은 다음과 같습니다
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 ..
(스크립트를 실행하는 동안 그렇게 오래 기다리지 않으려면 줄이면 됩니다).