我想暂停某个 bash 脚本 30 分钟。现在我使用sleep 1800
,但没有考虑笔记本电脑可能处于挂起(睡眠)状态的时间。有办法实现这一点吗?
如果现在是中午 12:53,我想在凌晨 1:23 恢复该程序。但与此同时,计算机可以处于睡眠状态。如果计算机休眠到凌晨 1:23 以后,那么我希望程序在从休眠状态恢复后立即恢复。
答案1
也许将其包裹在一个while
循环中并测试是否在预定时间。
#!/bin/bash
SOON=$(($(date +%s) + 1800))
while [[ "$NOW" -le "$SOON" ]]; do
sleep 1
NOW=$(date +%s)
done
日期的想法也可以在切普纳的这个回答。该命令以 1970 年以来的秒数为单位+%s
格式化date
日期。$(( ))
只是算术上加上秒数。将 1800 替换为任意数量(可能最好用少量进行测试,看看是否有效)。sleep 1
使脚本每秒检查一次条件。