Hej.
Jeg har en linux-box hvor det via et script er lykedes mig at stoppe USB
harddisk 1 efter et stykke tid uden aktivitet....
Jeg har bare to harddiske, og ville meget gerne kunne stoppe begge på denne
måde, men hvordan skal dette script mon så se ud ??
/mnt/disc0_1 fungere det på, men /mnt/disc0_2 fungere det ikke på......
#!/bin/sh
#while [ true ]; do
# load="$(cat /proc/loadavg |cut -d ' ' -f 1|cut -b '1,3-4')"
# if [ "$load" -lt "105" ]; then
# /usr/sbin/scsi-stop /dev/sda
# fi
# sleep 600
#done
if /usr/bin/[ $# -ne 1 ]; then
/bin/echo 1>&2 "Usage: $0 <device>"
exit 1
fi
PERIOD=30
BOUNDARY=1200
SCSISTOP=/usr/sbin/scsi-stop
LOGFILE=/tmp/scsi-stop.log
searchstr="disk_io:"
devaddr="(`/bin/ls -l $1 | /usr/bin/awk '{print($5 int($6/16))}'`)"
str=`/bin/grep "$searchstr" /proc/stat | devaddr="$devaddr" /usr/bin/awk -v
'RS= |\n' -F : '{ if($1==ENVIRON["devaddr"]) print($2) }'`
cooltime=0
stopped=0
while /bin/true; do
/bin/sleep $PERIOD
newstr=`/bin/grep "$searchstr" /proc/stat | devaddr="$devaddr"
/usr/bin/awk -v 'RS= |\n' -F : '{ if($1==ENVIRON["devaddr"]) print($2) }'`
if /usr/bin/[ "$newstr" = "$str" ]; then
cooltime=$(($cooltime + $PERIOD))
if /usr/bin/[ $cooltime -ge $BOUNDARY -a $stopped -eq 0 ];
then
$SCSISTOP $1
time=`/bin/date '+%b %e %H:%M:%S'`
/bin/echo "$time: Cooled down..." >> $LOGFILE
stopped=1
fi
else
if /usr/bin/[ $cooltime -ne 0 ]; then
time=`/bin/date '+%b %e %H:%M:%S'`
/bin/echo "$time: Disk first used after $cooltime
seconds" >> $LOGFILE
fi
cooltime=0
str=$newstr
stopped=0
fi
done
--
Peter