让 cron 等待作业完成后再重新启动

发布于 2024-09-18 02:01:40 字数 230 浏览 4 评论 0原文

我有一个每隔一分钟执行一次的 cronjob,通常在几秒钟内运行,但有时会持续几分钟。

如果下一分钟到来时命令已经在运行,我需要 cron 不执行该命令。

该线看起来像这样 */1 * * * * cmd

我已经尝试过这个 * * * * * ID=job1 FREQ=1m AFTER=job1 cmd

但没有成功。

是否可以用 cron 解决或者我必须实施锁定?

I have a cronjob that executes every second minute that usually runs in seconds, but sometimes for several minutes.

I need cron to not execute the command if it's already running when the next minute comes.

The line looks like this
*/1 * * * * cmd

I have tried with this
* * * * * ID=job1 FREQ=1m AFTER=job1 cmd

but to no success.

Is it possible to solve with cron or do I have to implement locking?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

孤独陪着我 2024-09-25 02:01:40

您可以创建一个名为 inProgress (或其他)的临时文件,并将其存储在标准位置,并使用它与下一个作业进行通信(如果它应该运行或不运行)。

如果工作流程是这样的怎么办:

  1. 检查标准 inProgress
    文件
  2. 如果存在,则退出
  3. 否则,创建 inProgress 文件
  4. 执行操作
  5. 删除 inProgress 文件。

You can make a temp file called inProgress (or whatever) and store it in a standard place, and use this to communicate to the next job if it should run or not.

What if flow of the job goes like this:

  1. Check for a standard inProgress
    file
  2. If it exists, quit
  3. Else, create inProgress file
  4. Do work
  5. Delete inProgress file.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文