0

我需要在特定日期/时间开始“a.out”。例如,我想非常准确地在下午 12:10:30 开始“a.out”。任何想法表示赞赏!

4

2 回答 2

4

这就是cron和/或at的目的。

由于cron只有一分钟的分辨率,您可能需要设置一个在 12:09 运行的脚本。

然后,该脚本将进入一个紧密循环,检查日期和时间,直到正好是 12:10:30,然后运行您的“真实”代码。

因此,您的cron输入将是:

9 12 * * * /mydir/myscript

/mydir/myscript是这样的:

#!/bin/bash
while [[ $(date +%H%M%S) -lt 121030 ; do
    sleep 1
done
/mydir/myexecutable

那就是如果您希望它在一天中的同一时间运行很多天。对于一次性执行,您仍然可以使用脚本,但使用at它来运行它(时间字符串为YYYYMMDDhhmm):

at -f /mydir/myscript -t 201212311209

或者,如果您at足够先进,它可能允许在-t选项中进行亚分钟规范,以便您的包装作业不会停留太久(时间字符串YYYYMMDDhhmm.ss):

at -f /mydir/myscript -t 201212311210.25
于 2012-10-12T01:35:11.930 回答
3

这很简单:

at 1210 <<< "sleep 30; /path/to/a.out"

atcommand 专门设计用于在特定时间运行命令。cron不同的是,它是为重复任务而设计的。

man 1 at

于 2012-10-12T01:36:07.030 回答