Назад | Перейти на главную страницу

Использование blkid для проверки, отформатирован ли прикрепленный том EBS

У меня проблема с частью скрипта, который пытается проверить, отформатирован ли прикрепленный том перед форматированием.

Команда grep, используемая в этой проверке, возвращает ноль, если том не отформатирован при использовании томов nvme. Это потому, что вывод file -s кажется длинной строкой символов:

Xs\333d8\374R\352if\253w}$\014\246E\034_I\275\304\2505!\3536U\336\252\274\252\323K\345\334\225;\356\0075T\350ru\003Kwp\353v:\326\263a\251\307\/\001Db\216

Из-за этого счетчик grep возвращает ноль, и сценарий предполагает, что диск уже отформатирован, потому что оператор if предполагает, что если счетчик равен нулю, он уже должен быть отформатирован.

Текущая проверка находится на выходе, равно ли оно нулю:

file -s /dev/nvme | grep -c ': data$'

Я хотел бы знать, могу ли я безопасно использовать blkid, но убедитесь, что он больше нуля, а не нуля, чтобы определить, отформатирован ли том:

blkid | grep -c /dev/nvme

Вы можете проверить детали конкретного устройства и действовать исходя из этого:

blkid --match-token TYPE=ext4 /dev/nvme123 || mkfs.ext4 -m0 /dev/nvme123

Что это значит:

  1. blkid проверяет, есть ли /dev/nvme123 является ext4 форматируется, и в противном случае возвращает ненулевой код возврата.
  2. Двойная труба || выполняет вторую команду (mkfs.ext4) только в том случае, если первая вернула ненулевое значение. Если первый вернулся 0 он не запустит mkfs.

Надеюсь, это поможет :)

Попробуйте что-то вроде ниже

# for type in ext4 ext3 ext2 iso9660;do [[ `blkid |grep /dev/vdc|awk '{print $NF}'`  =~ TYPE=\"$type\" ]] && echo matched ;done

Вывод

matched

Перечислите ожидаемые типы файловых систем и проверьте, совпадают ли они, отметьте их и используйте для дальнейшей обработки.