반대쪽으로이것질문, 현재 어떤 파티션이나 LV가 마운트되어 있지 않은 (물리적) 디스크를 알고 싶습니다. 이는 현재 시스템에 마운트된 파티션이나 LV가 없는 디스크를 반환해야 하는 스크립트입니다.
명령줄 도구(bash 내장, grep, lsblk 및 sed의 혼합이 바람직하지만 awk
가능하면 "와드" 프로그래밍이나 고도로 전문화된 타사 프로그램은 피함)를 사용하여 이를 수행할 수 있는 (상당히) 쉬운 방법이 있습니까? 알아보세요.
편집(명확화를 위해):
단일 파티션(예: /dev/sdc{1,2,3,4}이 없음)이나 LV가 아닌 경우 "/dev/sdc" 및/또는 "/dev/sdd"를 가져오는 방법을 찾고 있습니다. (예: /dev/mapper/some_VG_name-LV_name)이 현재 시스템에 설치되어 있습니다. 단일 파티션이나 LV를 마운트하더라도 디스크는 반환되지 않습니다.
답변1
나에게 맞는 솔루션을 찾았습니다.
aAllDisks=($(/usr/bin/lsblk --nodeps --noheadings --output NAME --paths))
aFreeDisks=()
for sDisk in "${aAllDisks[@]}"; do
sMounts="$(/usr/bin/lsblk --noheadings --output MOUNTPOINT "${sDisk}" | grep -vE "^$")"
if [ "${sMounts}" == "" ]; then
aFreeDisks+=("${sDisk}")
fi
done
echo "${aFreeDisks[@]}"
그러면 먼저 마운트된 모든 물리적 디스크를 가져온 다음 이를 반복합니다. 디스크에 마운트가 없으면 나중에 사용하기 위해 수집됩니다. 위의 예에서는 단순히 에코를 하고 있습니다.