mirror of
https://codeberg.org/privacy1st/nix-git
synced 2024-12-12 01:00:43 +01:00
45 lines
1.0 KiB
Bash
45 lines
1.0 KiB
Bash
#!/usr/bin/env bash
|
|
#
|
|
# Watch disk power state (HDD spin-up and spin-down events).
|
|
#
|
|
|
|
# Arguments.
|
|
disk='/dev/disk/by-id/ata-WDC_WD40EFRX-68N32N0_WD-WCC7K0CPF0N1'
|
|
|
|
# Assert that this script is run as root.
|
|
if [ "$(id -u)" -ne 0 ]; then
|
|
printf '%s\n' 'Error: This script has to be run as root user.' 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
trap ctrl_c INT
|
|
function ctrl_c() {
|
|
echo "End: $(date +"%Y-%m-%dT%H:%M:%S%z")"
|
|
exit 0
|
|
}
|
|
|
|
function notify-spin-down(){
|
|
while hdparm -C "${disk}" | grep 'active/idle' >/dev/null; do
|
|
sleep 15s
|
|
done
|
|
echo "$(date +"%Y-%m-%dT%H:%M:%S%z"): ${disk} has spun down"
|
|
}
|
|
function notify-spin-up(){
|
|
while hdparm -C "${disk}" | grep 'standby' >/dev/null; do
|
|
sleep 15s
|
|
done
|
|
echo "$(date +"%Y-%m-%dT%H:%M:%S%z"): ${disk} has spun up"
|
|
}
|
|
function main(){
|
|
echo "Start: $(date +"%Y-%m-%dT%H:%M:%S%z")"
|
|
hdparm -C "${disk}" | grep 'active/idle' >/dev/null && notify-spin-down
|
|
hdparm -C "${disk}" | grep 'standby' >/dev/null && {
|
|
while :; do
|
|
notify-spin-up
|
|
notify-spin-down
|
|
done
|
|
}
|
|
echo "${disk} has unknown state"
|
|
}
|
|
main
|