Suspendre un disque dur après 3 minutes sans usage
Certains services peuvent faire une requête après une minute. On ne peut donc pas arrêter le disque après 60.
Voici un script /usr/scripts/suspendWDUSB.sh qui arrête le disque après un temps paramétrable (180s par défaut) :
#!/bin/bash
# Read /sys/block/DISK/stat. If there is no change since three minutes, shut down the disk in idle
# Do not put the /dev before disk identifier
DISK="sdb"
CACHEFILE="/run/suspendWDUSB"
STATEFILE="/run/suspendWDUSB.state"
UNUSEDTIME=180
# End of configuration
SYS="/sys/block/$DISK/stat"
DEV="/dev/$DISK"
if [ ! -f $SYS ]; then
echo "$0 : Disk $DISK not available in $SYS"
exit 1
fi
if [ ! -e $DEV ]; then
echo "$0 : Disk $DISK not available in $DEV"
exit 2
fi
if [ ! -f $CACHEFILE ]; then
echo "First start" | logger -p local0.info -t suspendWDUSB
cat $SYS > $CACHEFILE
else
if [ "`cat $CACHEFILE`" != "`cat $SYS`" ]; then
#echo "Changed : Stay up" | logger -p local0.info -t suspendWDUSB
cat $SYS > $CACHEFILE
touch $STATEFILE
else
if [ $(($(date +%s) - $(date +%s -r $CACHEFILE))) -gt $UNUSEDTIME ] &&
[ -f $STATEFILE ]; then
echo "Disk not used in the $UNUSEDTIME seconds : go to sleep now" | logger -p local0.info -t suspendWDUSB
/sbin/hdparm -y $DEV >/dev/null 2>/dev/null
rm -f $STATEFILE
fi
fi
fi
Activer ce script par cron : /etc/cron.d/suspendWDUSB :
* * * * * root /usr/scripts/suspendWDUSB.sh