我有一个包含特定日期和时间的文本文件。 我希望能够在该文件中指定的时间运行脚本。 你会如何实现这一目标? 创建另一个在后台运行的脚本(一种deamon),如果当前时间与文件中的时间匹配,则每秒检查一次? 还有另外一种方法吗? 该机器是一个 linux 服务器,Debian wheezy。 提前致谢
答案 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 month
和month
(按此顺序),5
是工作日
答案 3 :(得分:6)
Cron 适用于定期运行的事情,例如每周六凌晨4点。还有 anacron ,可以解决电源关闭,睡眠等问题。以及 。
但对于一次性解决方案,不需要root或任何东西,您只需使用 date 来计算目标时间的秒数以及时间段,以及当前时间,然后使用 expr 查找差异,睡眠那么多秒。