是否有(半)标准的 Unix 命令会休眠到其命令行上指定的时间?换句话说,我正在寻找类似于sleep需要唤醒时间而不是持续时间的东西。
例如: sleeptill 05:00:00
我可以编写一些代码,但如果已经有了一些东西,我宁愿不重新发明轮子。
额外的问题:如果它可以使用时区(如sleeptill 05:00:00 America/New_York),那就太好了。
编辑由于我正在做的事情的性质,我正在寻找“睡眠直到 T”而不是“在 T 运行命令”解决方案。
编辑为免生疑问,如果我在 18:00 运行命令并告诉它在 17:00 醒来,我希望它睡 23 小时(或者,在某些与夏令时有关的极端情况下, 22 或 24 小时。)
w00*_*00t 17
如果您使用的 Unix 具有合适的日期命令并使用 bash,则可以使用该%s格式来计算时间。
sleep $(( $(date -j 1700 +%s) - $(date +%s) ))
Run Code Online (Sandbox Code Playgroud)
1700 下午 5 点。-j 告诉 date 不要实际设置日期。Tyl*_*ick 13
这个怎么样(将 w00t 和 Gille 的想法组合成一个函数)?
function sleep_until {
seconds=$(( $(date -d "$*" +%s) - $(date +%s) )) # Use $* to eliminate need for quotes
echo "Sleeping for $seconds seconds"
sleep $seconds
}
Run Code Online (Sandbox Code Playgroud)
用法:
sleep_until 8:24
Sleeping for 35 seconds
sleep_until '23:00'
Sleeping for 52489 seconds
sleep_until 'tomorrow 1:00'
Sleeping for 59682 seconds
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13644 次 |
| 最近记录: |