94

我有一个包含特定日期和时间的文本文件。 我希望能够在该文件中指定的时间运行脚本。 你将如何做到这一点?创建另一个在后台运行的脚本(类似于守护进程)并每秒检查当前时间是否与文件中的时间匹配?还有其他方法吗?机器是linux服务器,Debian wheezy。提前致谢

4

4 回答 4

167

请看以下内容:

echo "ls -l" | at 07:00

此代码行在特定时间执行“ls -l”。这是在特定时间执行某事(在我的示例中为命令)的示例。“at”是您真正需要的命令。您可以在此处阅读规格:

http://manpages.ubuntu.com/manpages/precise/en/man1/at.1posix.html http://manpages.ubuntu.com/manpages/xenial/man1/at.1posix.html

希望能帮助到你!

于 2013-09-22T15:58:49.467 回答
21

at命令专门为此目的而存在(与cron用于调度重复任务的命令不同)。

at $(cat file) </path/to/script
于 2013-09-22T15:56:11.700 回答
12

Cron适合定期运行的东西,比如每周六凌晨 4 点。还有anacron,它可以解决电源关闭、睡眠等问题。以及.

但是对于不需要 root 或任何东西的一次性解决方案,您可以只使用date来计算目标时间和当前时间的 seconds-since-epoch,然后使用expr找出差异,然后那么多秒。

于 2013-09-22T16:02:19.270 回答
7

通常在 Linux 中,您使用crontab这种调度任务。但是您必须指定“设置计时器”的时间 - 因此,如果您希望它可以在文件本身中进行配置,则必须创建一些机制来做到这一点。

但一般来说,你会使用例如:

30 1 * * 5 /path/to/script/script.sh

将在每周五凌晨 1:30 (AM) 执行脚本:

30是分钟

1是小时

接下来的 2 个 * 是day of monthmonth(按此顺序)并且5是工作日

于 2013-09-22T15:52:29.307 回答