我有一个包含特定日期和时间的文本文件。 我想要在该文件指定的时间运行脚本。 如何实现? 创建另一个在后台运行(类似守护进程)并每秒检查当前时间是否与文件中的时间匹配的脚本? 还有其他方法吗? 该机器是一个Linux服务器,Debian wheezy。 先感谢您。
请看下面:
echo "ls -l" | at 07:00
这行代码可以在特定的时间执行"ls -l"。 这是一个在特定时间执行某些内容(在我的例子中是一个命令)的示例。"at"是您真正正在寻找的命令。 您可以在此处阅读规格说明:
http://manpages.ubuntu.com/manpages/precise/en/man1/at.1posix.htmlhttp://manpages.ubuntu.com/manpages/xenial/man1/at.1posix.html
无法打开/var/run/atd.pid以向atd发送信号。没有运行atd吗?
有什么线索吗? - HappyCodingat
,需要启动 atd
守护进程。在 Manjaro OpenRC 上,可以安装 at-openrc
包,并通过以下命令添加守护进程服务:sudo rc-update add atd
,然后使用 sudo rc-service atd start
启动服务。通常情况下,at
软件包已经包含了一个 systemd
服务(Ubuntu 等各种发行版 Linux 的默认 init/service 系统),可以使用以下命令启动服务 sudo systemctl start atd
并启用初始化时的自动启动 sudo systemctl enable atd
。 - Manoel Vilelasudo apt install at
即可。 - Cedricat
命令专门用于此目的(与定期安排任务的 cron
不同)。
at $(cat file) </path/to/script
$(<file)
。 - glenn jackmanCron适用于周期性运行的任务,例如每周六早上4点。还有anacron,可以处理电源关闭、休眠等情况。此外还有at命令。
但是对于一次性的解决方案,不需要root权限或其他任何权限,您可以使用date计算目标时间和当前时间之间的自1970年1月1日以来的秒数差,然后使用expr查找差异并sleep相应的秒数。
at
任务仍将保持调度状态。 - tripleeecrontab
来执行此类定时任务。但是,您必须指定“设置计时器”的时间 - 因此,如果您希望它在文件本身中可配置,您将需要创建某种机制来实现这一点。30 1 * * 5 /path/to/script/script.sh
每周五凌晨1:30执行脚本
30
代表分钟数
1
代表小时数
接下来的两个星号分别是 日期
和 月份
(顺序为日期在前),而5
则表示星期五。
systemd-run
来替代at
命令。可以参考Unix Stack Exchange上的这篇帖子。 - undefined