削除する必要がある scsi ディスクのリストがあります。このリストはせいぜいランダムと見なされ、随時変更されることがあります。私が作成した事前定義されたリストを除くすべてのアイテムを削除したいと思います。それでは、次のことを維持したいとしましょう。
/dev/sda
/dev/sdb
私が実行する必要があるコマンドは次のとおりです。
"echo 1 > /sys/block/sdX/device/delete"
ここで、Xは削除するデバイスです。
私はbashスクリプトに精通していないので、どこから始めるべきかわかりません。
明確ではないのでDVを受けないようにまとめると。
システム上のすべてのsdXデバイスに対して「echo 1> /sys/block/sdX/device/delete」を実行する必要があります(予約リストを除く)。
編集:以下の回答の後、これが私が使用することにしました。 「LocalDisks.txt」には、「/dev/sda」などの行を含める必要があります。
#!/bin/bash
exclude=$(cut -d/ -f3 LocalDisks.txt)
for sysfile in /sys/block/sd* ; do
dev=$(basename $sysfile)
del=$sysfile/device/delete
if [[ $exclude == *$dev* ]] ; then
echo "Device $dev excluded"
elif [ ! -w $del ] ; then
echo "$del does not exist or is not writable"
else
echo 1 > $del
fi
done
答え1
動作するアプローチは次のとおりです。
sdX
除外するデバイスのリストを取得するexclude=$(cut -d/ -f3 exclude.txt)
ディレクトリの繰り返し
/sys/block/sdX
:for sysfile in /sys/block/sd? ; do
sdX
そのパスから名前を抽出し、delete
ファイル名を作成します。dev=$(basename $sysfile) del=$sysfile/device/delete
sdX
除外リストにあることを確認してください。if [[ $exclude == *$dev* ]] ; then echo "Device $dev excluded"
ファイルを削除するための適切な書き込み権限があることを確認してください。
elif [ ! -w $del ] ; then echo "$del does not exist or is not writable"
削除(あまりそうではありません)
else echo "echo 1 > $del" fi
もう終わりました!
done