如何在精确的时间开始工作?

Pet*_*ann 5 cron-jobs

我想在精确的时间开始录音工作。据我所知,cron 只能保证在一分钟内开始工作。

一种可能的解决方案是提前启动 cron 作业,然后等到精确时间。我还有哪些可能性?

Oll*_*lli 6

最简单的方法是将 cron 作业提前一分钟启动,然后自己添加时间。

您也可以使用at. 至少手册页at说你可以使用相当精确的时间,包括秒。您可以通过添加at记录时间的作业来测试这一点,例如运行 shell 脚本

date > ~/at_test
Run Code Online (Sandbox Code Playgroud)

如果您使用 cron 路线,那date +%s是您的朋友。

例如

#!/bin/bash
target_time=1298301898
let wait_time=target_time-`date +%s`
if [ $wait_time -gt 0 ]; then
 sleep wait_time
fi
# Execute your code
Run Code Online (Sandbox Code Playgroud)

使用这种方法,您的下一个问题是弄清楚如何确定 target_time。如果您始终知道要在下一分钟启动它,则可以使用

sleep 2 # Avoid running on xx:59, if cron starts immediately.
let wait_time=60-`date +%M`
sleep wait_time
Run Code Online (Sandbox Code Playgroud)

等到分钟的变化。