在第一天的时间“n”运行 Linux 脚本,第二天的时间“n+15 分钟”运行,依此类推

在第一天的时间“n”运行 Linux 脚本,第二天的时间“n+15 分钟”运行,依此类推

我正在尝试使用我的网络摄像头拍摄延时图像。我想做的是在 1 月 1 日午夜运行一个脚本,然后在 1 月 2 日 00:15、1 月 3 日 00:30 等等。这可以一直运行,完成后我会将其关闭。

我无法使用 Cron 来做到这一点,不是吗?除非将所有可能的组合都填入 crontab。但我不知道还能做什么。

答案1

您无需在脚本中创建新的 cron 作业,也不必每次都删除“旧”的 cron 作业,而应该使用命令at。该at命令就是为此而创建的,用于让命令在特定日期/时间运行一次。这样,您就不必删除旧的 cron 作业。

因此,您可以拥有自己的脚本,我们将其称为“capture_from_webcam.sh”,如下所示:

#!/bin/bash

#schedule next capture for tomorrow + 15 minutes
echo "/path/to/capture_from_webcam.sh" | at tomorrow + 15 minutes

# capture from webcam
/path/to/capture_from_webcam.sh

第一次执行是在 1 月 1 日午夜:

echo "/path/to/capture_from_webcam.sh" | at 00:00 01/01/2010

有关详细信息,请参阅在手册页

答案2

您可以创建一个 cron 作业作为您计划运行的脚本的一部分。因此,让 cron 作业运行一次,然后 bash 脚本在 15 分钟后创建下一个作业,依此类推。

以下是之前的一个问题,或许对您有帮助:如何使用 bash 创建 cron 作业

答案3

您可以通过 cron 执行此操作。

您每天在同一时间调用相同的 cron 脚本,但是在脚本的开头添加了一个 sleep 语句,该语句将休眠 15 分钟* date +'%j',即一年中的这一天,[ 001 ... 366 ]。

相关内容