如何在Linux上的某个时间运行脚本?

时间:2013-09-22 15:47:41

标签: linux bash scripting debian

我有一个包含特定日期和时间的文本文件。 我希望能够在该文件中指定的时间运行脚本。 你会如何实现这一目标? 创建另一个在后台运行的脚本(一种deamon),如果当前时间与文件中的时间匹配,则每秒检查一次? 还有另外一种方法吗? 该机器是一个 linux 服务器,Debian wheezy。 提前致谢

4 个答案:

答案 0 :(得分:132)

请看以下内容:

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

希望它有所帮助!

答案 1 :(得分:13)

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

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

答案 2 :(得分:6)

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

但总的来说,你会使用例如:

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

每周五凌晨1:30(上午)执行脚本 这里:

30是分钟

1是小时

下一个2 *是day of monthmonth(按此顺序),5是工作日

答案 3 :(得分:6)

Cron 适用于定期运行的事情,例如每周六凌晨4点。还有 anacron ,可以解决电源关闭,睡眠等问题。以及

但对于一次性解决方案,不需要root或任何东西,您只需使用 date 来计算目标时间的秒数以及时间段,以及当前时间,然后使用 expr 查找差异,睡眠那么多秒。