#!/bin/sh disk_label=$1 file_system=$2 mount_point=$3 interval=$4 disk_exist=0 up=0 while [ true ]; do # 10秒毎にディスク有無のチェック if [ -e "/dev/disk/by-label/$disk_label" ]; then if [ $disk_exist = 0 ]; then disk=`findfs LABEL=$disk_label | sed -e "s@/dev/@@"` state=`grep " $disk " /proc/diskstats` disk_exist=1 up=1 count=$interval mount -t $file_system -o defaults,noatime /dev/$disk $mount_point echo "$disk_label ($disk) detected and mounted ($mount_point) " `date` fi else if [ $disk_exist = 1 ]; then disk_exist=0 up=0 echo "$disk_label ($disk) removed " `date` fi fi sleep 10 # ディスクがある場合のみ if [ $disk_exist = 1 ]; then count=$(($count-10)) newstate=`grep " $disk " /proc/diskstats` if [ "$state" = "$newstate" ]; then if [ $count -lt 0 ]; then count=$interval if [ $up = 1 ]; then echo "$disk is spin-down " `date` sync state=`grep " $disk " /proc/diskstats` sdparm --command=stop -r /dev/$disk 2>&1 up=0 fi fi else if [ $up = 0 ]; then echo "$disk is up " `date` fi count=$interval state="$newstate" up=1 fi fi done