我想在精确的时间开始录制作业。据我了解,cron 只能保证在一分钟内开始一项作业。
一种可能的解决方案是提前启动 cron 作业,然后等到精确的时间。我还有什么其他选择吗?
答案1
最简单的方法是将 cron 作业提前一分钟启动,然后自行添加时间。
您也可以使用at
。至少的手册页at
说您可以使用相当精确的时间,包括秒。您可以通过添加at
记录时间的作业来测试这一点,例如运行 shell 脚本。
date > ~/at_test
如果您采用 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
使用这种方法,你的下一个问题是弄清楚如何确定 target_time。如果你总是知道你想在下一分钟启动它,你可以使用
sleep 2 # Avoid running on xx:59, if cron starts immediately.
let wait_time=60-`date +%M`
sleep wait_time
等待细微的变化。