Saya memiliki daftar disk scsi yang perlu saya hapus. Daftar dianggap paling acak dan berubah dari waktu ke waktu. Saya ingin menghapus semuanya kecuali daftar yang telah saya buat sebelumnya. Mari kita asumsikan untuk saat ini bahwa saya hanya ingin menyimpan:
/dev/sda
/dev/sdb
Perintah yang perlu saya jalankan adalah:
"echo 1 > /sys/block/sdX/device/delete"
Di mana X adalah perangkat yang akan dihapus.
Saya tidak pandai bash scripting jadi saya tidak tahu harus mulai dari mana.
Untuk rekap jadi saya tidak mendapatkan DV'd karena tidak jelas.
Saya perlu "echo 1> / sys / block / sdX / device / delete" untuk setiap perangkat sdX pada sistem kecuali untuk daftar yang telah ditentukan.
EDIT: Setelah jawaban di bawah ini, inilah yang saya putuskan untuk digunakan. "LocalDisks.txt" harus berisi baris seperti "/ 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