저는 현재 일요일에 백업을 실행하기 위해 veracrypt 암호화 하드 드라이브를 설치하도록 되어 있는 bash 스크립트를 작성 중입니다. 매주 두 개의 서로 다른 HDD 사이를 순환하고 싶기 때문에 스크립트가 장치를 마운트하기 전에 /dev/sdb1 또는 /dev/sdc1이 현재 장치에 연결되어 있는지 확인해야 합니다.
hdd_sdb1="$(fdisk -l | grep /dev/sdb1)"
hdd_sdc1="$(fdisk -l | grep /dev/sdc1)"
if [ -n "$hdd_sdb1" ]
then
hdd_name=/dev/sdb1
fi
if [ -n "$hdd_sdc1" ]
then
hdd_name=/dev/sdc1
fi
지난 주말에 스크립트의 변수를 변경했는데 설치가 제대로 작동했습니다. 이번 주말에 스크립트가 실행되었을 때 위의 fdisk 명령 중 어느 것도 행을 반환하지 않았기 때문에 if 쿼리가 작동하지 않았습니다. 이제 하드 드라이브가 한동안 설치되지 않은 경우 OS가 하드 드라이브를 비활성화하는지 궁금합니다. 비활성화할 수 있는 방법이 있습니까?
답변1
문제를 발견했습니다.
하드 드라이브가 제대로 마운트되지 않았거나 종료되었기 때문이 아니라 명령 때문입니다 fdisk
. cronjob을 사용하여 스크립트가 실행되고 로그인한 사용자가 없으므로 fdisk
출력이 반환되지 않으므로 변수는 항상 비어 있습니다.
이제 파일이 폴더 에 sdb1
있는지 테스트하고 명령을 무시합니다.sdc1
/dev
fdisk