1

次のスクリプトを作成しましたが、システムに拡張パーティションがあるとハングします。マウントは、もちろん機能しない拡張パーティション ウィッチをマウントしようとします。

パーティションが拡張されている場合、ループからパーティションを削除するにはどうすればよいですか???

for i in hda hdb hdc hdd hde hdf sda sdb sdc sdd sde sdf sdg sdh sdi ; do 
fdisk -l /dev/$i > /tmp/mnt.txt 
cat /tmp/mnt.txt | grep "Disk" 1>/dev/null && { echo -n "controle harddisk $i: "
found=0
for j in 1 2 3 4 5 6 7 8 9 ; do
cat /tmp/mnt.txt | grep "$i$j" 1>/dev/null && { echo -n "$i$j " ; 
    found="1"; 
    mkdir /media/$i$j 2>/dev/null
    mount /dev/$i$j /media/$i$j 2>/dev/null

        # test voor /C
    if [ -d "/media/$i$j/Program Files" ] ; then
        umount /media/$i$j 
        mount /dev/$i$j /C 
        echo -n "(/C) " 
    fi

        # test voor /B
    if [ -d /media/$i$j/Boot ] ; then 
        umount /media/$i$j 
        mount /dev/$i$j /B 
        echo -n "(/B) " 
    fi

        # test voor /herstel
    if [ -f /media/$i$j/partimage ] || [ -f /media/$i$j/fsarchiver ] || [ -d /media/$i$j/lost+found ] ; then
        umount /media/$i$j 
        mount /dev/$i$j /herstel 
        echo -n "(/herstel) "  
    fi

        # test voor /G
    if [ -d /media/$i$j/herstel ] ; then
        umount /media/$i$j 
        mount /dev/$i$j /G
        echo -n "(/G) "
        fi
}
done
if [ "$found" == "0"  ] ; then echo "(geen partities)"; else echo ""; fi
}

やった

4

2 に答える 2

1

grep -v "Linux extended"質問に厳密に答えるには、2 回目の呼び出しに別の呼び出しを追加するだけでよいでしょうgrep。これにより、拡張されたアクセス許可を含む行が除外されます。

これを実行する場所と配布する範囲に応じて、設計について検討し、より「肯定的な」一致基準を追加することをお勧めします (たとえば、特定のタイプのパーティションのみをマウントし、具体的には除外しません)。そうでないもの(たとえば、あなたの例のスワップパーティションはどうですか?)、これははるかに安全なアプローチです。

于 2012-08-16T09:16:03.277 に答える
0

私がよく理解していれば、この画像のように、拡張は論理パーティションを意味します(sda2です)

http://s1053.photobucket.com/user/curious_apprentice/media/ApplyingWindowsdrivereziseactiononGparted.png.html

私は通常、/sys/class/block/sd$i$j/size のサイズをチェックして、それが 100 より大きい場合は非論理パーティションであることを意味します

if [ `cat /sys/class/block/sd$i$j/size` -gt 100 ]; then

  echo "sd$i$j it's extended"

fi

:)アドナイ

于 2013-10-10T12:04:26.057 に答える