Suspendre un disque dur après 3 minutes sans usage
Publié le 10/04/2021 Debian
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