How to run a script at a certain time on Linux?
我有一个包含特定日期和时间的文本文件。我希望能够在该文件中指定的时间运行脚本。你会怎么做到?创建另一个在后台运行的脚本(类似于一个讲道),并每秒检查当前时间是否与文件中的时间匹配?还有别的办法吗?这台机器是一台Linux服务器,debian weezy。提前谢谢
- 克罗恩为什么不工作?
- 为什么这个主题是关闭的?这是一个非常合理的问题。谷歌搜索会把你引向"1",答案相当呆板。所以能回答这个问题的人会被屏蔽
- @Richard我怀疑StackOverflow关闭这么多这样的问题的原因是为了鼓励用户在适当的StackExchange站点上提出不属于主题的问题。有相当多以前不存在的新SE站点。例如,有很多非常有用的VIM问题,所以作为非主题结束,现在有一个VI/VIM SE,这些问题将在那里讨论。只是沉思。然而,这仍然像是一个编程问题
- 我忘记了每次学习后如何使用cron,我不需要任何高级的东西。
请看以下内容:
此代码行在特定时间执行"ls-l"。这是在特定时间执行某项操作(我的示例中的命令)的示例。""是你真正想要的命令。您可以在此处阅读规范:
http://manpages.ubuntu.com/manpages/precise/en/man1/at.1posix.htmlhttp://manpages.ubuntu.com/manpages/xenial/man1/at.1posix.html
希望它有帮助!
- 有什么线索吗?
- 您需要运行atd守护进程才能使用at。在manjaro openrc上,您只需安装at-openrc,并使用:sudo rc-update add atd添加守护进程ATD服务,然后从sudo rc-service atd start开始。通常,at包已经包含了一个systemd(各种发行版Linux上的默认init/service系统,包括ubuntu)服务,它可以用sudo systemctl start atd启动,也可以用sudo systemctl enable atd在init上启用autostart。
- 在我的例子中,这会立即打印出"2017-08-21 10:53的工作6"…
- 顺便说一句,我的bash文档描述了at -c的用法。如果执行一个命令的方法是通过管道将其导入std-in,这是为了什么?
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 month和month(按顺序排列),5是工作日。
- 那么你将如何触发这个命令呢?
- crontab guru(crontab.guru)是crontab配置的有用工具。