反対側にこれ質問、現在どのパーティションや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[@]}"
その後、最初にマウントされたすべての物理ディスクをインポートしてから繰り返します。ディスクにマウントがない場合は、後で使用するために収集されます。上記の例では単にエコーをしています。