关于bash:如何在Linux上的某个时间运行脚本?

How to run a script at a certain time on Linux?

我有一个包含特定日期和时间的文本文件。我希望能够在该文件中指定的时间运行脚本。你会怎么做到?创建另一个在后台运行的脚本(类似于一个讲道),并每秒检查当前时间是否与文件中的时间匹配?还有别的办法吗?这台机器是一台Linux服务器,debian weezy。提前谢谢


请看以下内容:

1
echo"ls -l" | at 07:00

此代码行在特定时间执行"ls-l"。这是在特定时间执行某项操作(我的示例中的命令)的示例。""是你真正想要的命令。您可以在此处阅读规范:

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

希望它有帮助!


at命令专门用于此目的(与cron命令不同,cron命令用于调度重复性任务)。

1
at $(cat file) </path/to/script


cron很适合定期运行的东西,比如每个星期六的凌晨4点。还有Anacron,它可以解决电源关闭、睡眠等问题。以及AT。

但是对于一个一次性的解决方案,不需要根或任何东西,您可以使用日期计算目标时间和当前时间之间的秒数,然后使用expr查找差异,并休眠许多秒。


通常在Linux中,您使用crontab来完成此类已调度的任务。但是,您必须指定"设置计时器"的时间——因此,如果您希望在文件本身中对其进行配置,则必须创建一些机制来实现这一点。

但一般来说,您可以使用以下示例:

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

将在每周五1:30(AM)执行脚本在这里:

30是分钟

1为小时

接下来的2个*是day of monthmonth(按顺序排列),5是工作日。