LinuxでUSBHDDを定期的にスピンダウンさせるスクリプトの改造

Linuxファイルサーバで、USBHDDの電源を長期的に入れておく場合に、定期的にUSBHDDをスピンダウンし、動作音を抑える方法が下記サイトで紹介されています。

8.USBHDDの定期的なスピンダウン方法(騒音対策) - RaspberryPiで各種サーバー作り! - ある阪大生の物置小屋


このスクリプトを、USBHDDを抜き差ししても問題ないように一部改造しました。
下記のスクリプトです。

hdd_spindown.sh

#!/bin/sh

get_dev() {
    while [ true ]; do
        disk=`ls -l /dev/disk/by-uuid | grep $1`
        if [ "$disk" ]; then
            break
        fi
        count=$interval
        sleep 10
    done
    echo `echo "$disk" |sed -E 's/^.+\///'`
}


if [ $# -lt 2 ]; then
    echo "not enough arguments supplied."
    echo "hdd_spindown.sh [UUID] [INTERVAL]"
    exit 0
fi

uuid=$1
interval=$2

count=$interval
up=1

while [ true ]; do
    sleep 10
    disk=`get_dev $uuid`
    count=$(($count-10))
    newstate=`grep " $disk " /proc/diskstats`
    if [ "$state" = "$newstate" ]; then
        if [ $count -lt 0 ]; then
            count=$interval
            if [ $up = 1 ]; then
                sync
                state=`grep " $disk " /proc/diskstats`
#hdparmを利用するとき
                hdparm -y /dev/$disk > /dev/null 2>&1
#sdparmを利用するとき
                sdparm --command=stop -r /dev/$disk > /dev/null 2>&1
                up=0
            fi
        fi
    else
        count=$interval
        state="$newstate"
        up=1
    fi
done

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック