From b7c7bab3131a002426c119476439d65949ada655 Mon Sep 17 00:00:00 2001 From: Knut Ahlers <knut@ahlers.me> Date: Tue, 11 Feb 2025 17:45:50 +0100 Subject: [PATCH] Make sleep-until laptop-sleep-safe by not waiting for the whole time at once but sleeping in chunks which then would wake up the device even when it slept most of the time-diff Signed-off-by: Knut Ahlers <knut@ahlers.me> --- bin/sleep-until | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/bin/sleep-until b/bin/sleep-until index 8f03d0b..1dcdff6 100755 --- a/bin/sleep-until +++ b/bin/sleep-until @@ -1,6 +1,8 @@ #!/bin/bash set -euo pipefail +default_sleep=10 + source ${HOME}/bin/script_framework.sh time=${1:-} @@ -9,5 +11,10 @@ time=${1:-} tdiff=$(($(date -d "$1" +%s) - $(date +%s))) [ $tdiff -gt 0 ] || tdiff=$((tdiff + 86400)) +ttime=$(date -d "now + ${tdiff} seconds" +%s) + step "Sleeping ${tdiff}s until $(date -d "now + ${tdiff} seconds" "+%Y-%m-%d %H:%M:%S")..." -sleep ${tdiff} +while [ $(date +%s) -lt $ttime ]; do + tremain=$(( ttime - $(date +%s) )) + [ $tremain -gt $default_sleep ] && sleep $default_sleep || sleep $tremain +done