将程序(bash 脚本)暂停到一定时间

将程序(bash 脚本)暂停到一定时间

我想暂停某个 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使脚本每秒检查一次条件。

相关内容