Cron 作业——每 5 秒运行一次

     2023-02-24     172

关键词:

【中文标题】Cron 作业——每 5 秒运行一次【英文标题】:Cron jobs -- to run every 5 seconds 【发布时间】:2011-03-20 21:10:51 【问题描述】:

我想创建每 5 秒运行一次脚本的 cron 作业。看到 cron 作业只允许 0-59 分钟的增量,依此类推。

我想创建另一个脚本来调用下面编写的原始脚本。

#!/bin/bash

while true
do
# script in the same directory as this script. is this correct?
bash makemehappy.sh
sleep 1
done

现在,我需要知道如何在每次启动计算机时运行此脚本,并且如果由于某种原因它没有运行,它会自行启动。

我也知道每分钟运行这个脚本并不是一件好事。 :)

如果有更简单的方法可以每 5 秒运行一次脚本,请告知。

请,谢谢。

【问题讨论】:

尝试每 5 秒做一件事真的是解决问题的最佳方法吗? Running a cron every 30 seconds的可能重复 【参考方案1】:

我不会为此使用 cron。我会使用那个 bash 脚本(使用绝对路径,除非你希望它是可移植的并且知道目录结构将被保留)。

相反,我只想sleep 5,就像你做的那样(只有 5 秒而不是 1 秒)。

就从您的系统启动它而言,这取决于系统。在(某些)Linux 发行版上,有一个名为 /etc/rc.local 的文件,您可以在其中添加要在系统启动时运行的脚本。嗯......我不应该这么笼统,我使用的发行版有这个。如果您运行的是 Ubuntu,则不再有 inittab,它们使用的是新贵,顺便说一句。

因此,如果您有一个无限循环并且在/etc/rc.local 中有一个条目,那么您应该让它无休止地运行(或者直到它遇到问题并退出)。

【讨论】:

我的发行版是 ubuntu?我似乎在 etc 目录中找不到该 rc.local 文件。建议? 什么版本? (cat /etc/issue) 10.04 我设法弄明白了。 :) 通过将其添加到 init.d 并更新 update-rc.d 不错!希望对你有用。 (如果对您有帮助,有机会选择我的答案吗?不是要粗鲁,我只是想建立我的代表,哈哈) 请注意,sleep 5 并不能保证您的代码每 5 秒准确执行一次,只是保证后续执行之间至少间隔 5 秒。【参考方案2】:

尝试使用 anacron,或者更好的是,在计算机启动时启动 init 脚本。

如果您希望脚本“自行重新启动”,则需要每隔几分钟运行一次以检查原始脚本是否仍在运行。这可以在 inittab (/etc/inittab) 中完成,或者在 Ubuntu 上,/etc/event.d。试试man 5 inittab,看看“重生”选项。

【讨论】:

【参考方案3】:

一些crons 有一个@reboot 时间说明符(这涵盖了所有时间和日期字段)。如果你的,你可以使用它。如果这是一个“系统”服务(而不是为自己运行的东西),那么这里的其他解决方案可能会更好。

【讨论】:

【参考方案4】:

初始化脚本在启动时很好,但不检测进程是否失败并且必须重新启动。 supervisord 在检测失败的进程并重新启动它们方面做得很好。我会推荐一个像@Tim 描述的带有 5 秒循环的脚本,但是将supervisord 包裹在它周围以确保它继续运行。

【讨论】:

【参考方案5】:

正如my answer to a similar question 中详细解释的那样,您可以使用 SystemD 计时器单元进行任何您想要的时间表 - 理论上可以达到 1 纳秒的时间表没有sleep kludges

快速概览:

    设置 SystemD 服务以运行您想要的 - 这可以很简单:

/home/myusuf3/.config/systemd/user/makemehappy.service

[Unit]
Description=Make me happy
[Service]
ExecStart=/home/myusuf3/.local/bin/makemehappy.sh
    使用您想要的时间表设置 SystemD 计时器,如 man systemd.timer 中所述:

/home/myusuf3/.config/systemd/user/makemehappy.timer

[Unit]
Description=Schedule to make me happy
[Timer]
OnBootSec=5
OnUnitActiveSec=5
AccuracySec=1
    启用和启动计时器:

systemctl --user daemon-reload
systemctl --user enable makemehappy.timer
systemctl --user start makemehappy.timer

(启用后,每次启动计算机时它都会自动启动,但您可能还是想现在启动它)。

【讨论】:

【参考方案6】:

要回答标题中的问题,这是如何每 5 秒运行一次 cronjob:

* * * * * /path/to/script.sh
* * * * * sleep 5 && /path/to/script.sh
* * * * * sleep 10 && /path/to/script.sh
* * * * * sleep 15 && /path/to/script.sh
* * * * * sleep 20 && /path/to/script.sh
* * * * * sleep 25 && /path/to/script.sh
* * * * * sleep 30 && /path/to/script.sh
* * * * * sleep 35 && /path/to/script.sh
* * * * * sleep 40 && /path/to/script.sh
* * * * * sleep 45 && /path/to/script.sh
* * * * * sleep 50 && /path/to/script.sh
* * * * * sleep 55 && /path/to/script.sh

它并不漂亮,但这个解决方案没有额外的工具或依赖项。因此,如果您有工作的 cron 作业,这应该可以立即工作。

【讨论】:

每 30 秒运行一次 cron 作业的最佳方式是啥? [复制]

】每30秒运行一次cron作业的最佳方式是啥?[复制]【英文标题】:Whichisthebestwaytorunacronjobevery30seconds?[duplicate]每30秒运行一次cron作业的最佳方式是什么?[复制]【发布时间】:2012-11-1406:43:26【问题描述】:我想每30秒运行一次cron作... 查看详情

使用 Node-Cron 每 10 秒执行一次 Cron 作业

】使用Node-Cron每10秒执行一次Cron作业【英文标题】:CronJobevery10secondswithNode-Cron【发布时间】:2015-07-2912:18:04【问题描述】:我使用Node-Cron每10秒运行一次cron作业。但似乎node-cron存在问题。https://github.com/ncb000gt/node-cron#cron-ranges我... 查看详情

Laravel 5 每 30 秒安排一次作业

】Laravel5每30秒安排一次作业【英文标题】:Laravel5schedulejobevery30seconds【发布时间】:2016-08-1421:30:42【问题描述】:我正在使用Laravel计划来运行cron作业。在我的crontab中,我添加了(带有正确的项目路径):*****php/path/to/artisansched... 查看详情

如何从 0 分钟以外的时间开始每 5 分钟运行一次 cron 作业?

】如何从0分钟以外的时间开始每5分钟运行一次cron作业?【英文标题】:HowcanIrunacronjobevery5minutesstartingfromatimeotherthan0minutes?【发布时间】:2013-04-1206:03:07【问题描述】:我想让脚本每5分钟运行一次,假设从13:02开始,这样我可以... 查看详情

为什么这个cron作业每分钟运行一次?(代码片段)

我在AWS服务器中以ec2用户身份运行了一个cron作业。Isetthecroncommand,likethis*/5****ec2-userbash./dailyMailSend.sh在crontab-e文件中。它被设定为每5分钟运行一次。但它每分钟运行一次。不知道为什么?答案对于亚马逊Linux,使用“0/5”而不是... 查看详情

node-cron 每 3 小时运行一次作业

】node-cron每3小时运行一次作业【英文标题】:node-cronrunjobevery3hours【发布时间】:2017-05-2615:17:32【问题描述】:我尝试每3小时运行一次node-cron作业,但我不确定我是否做得对。我现在正在使用:***/8***这对吗?【问题讨论】:【... 查看详情

每分钟运行一次 cron 作业,但从特定时间开始

】每分钟运行一次cron作业,但从特定时间开始【英文标题】:Runacronjobeveryminute,butstartingatspecifictime【发布时间】:2021-08-2214:21:54【问题描述】:我正在尝试设置一个在工作日上午9:45到下午4点之间每分钟运行一次的cron作业。在... 查看详情

仅在特定时间每分钟运行一次 cron 作业?

】仅在特定时间每分钟运行一次cron作业?【英文标题】:Runacronjobeveryminuteonlyonspecifichours?【发布时间】:2012-08-0812:14:37【问题描述】:如何像这样:它只会检查从上午11点到上午12点、下午4点到下午5点和晚上9点到晚上10点的每... 查看详情

使用 Node-Cron 每 45 分钟运行一次 Cron 作业

】使用Node-Cron每45分钟运行一次Cron作业【英文标题】:RunCronJobevery45minuteswithNode-Cron【发布时间】:2014-08-0706:26:04【问题描述】:我正在使用node-cron来运行预定的作业。我希望作业每45分钟运行一次,但它的行为很奇怪这是我正在... 查看详情

Cron 作业每 x 周和特定日期运行一次 [关闭]

】Cron作业每x周和特定日期运行一次[关闭]【英文标题】:Cronjobruneveryxweeksandonspecificdays[closed]【发布时间】:2012-03-3001:05:26【问题描述】:我想创建一个每x周和特定工作日运行的cron作业。例如:每两周在每周日和周一的午夜运... 查看详情

如何每 2 小时运行一次 cron 作业?

】如何每2小时运行一次cron作业?【英文标题】:Howtoruncronjobevery2hours?【发布时间】:2011-09-1909:27:01【问题描述】:如何编写一个每2小时运行一次/home/username/test.sh脚本的Crontab?【问题讨论】:【参考方案1】:首先执行crontab-l查... 查看详情

如何设置 cron 作业以每小时运行一次可执行文件?

】如何设置cron作业以每小时运行一次可执行文件?【英文标题】:Howtosetupacronjobtorunanexecutableeveryhour?【发布时间】:2011-03-2907:20:36【问题描述】:我需要设置一个cron作业,每小时运行一次使用gcc编译的可执行文件。我以root身份... 查看详情

将 cron 作业配置为在 Jenkins 上每 15 分钟运行一次

】将cron作业配置为在Jenkins上每15分钟运行一次【英文标题】:Configurecronjobtorunevery15minutesonJenkins【发布时间】:2013-10-2622:44:01【问题描述】:如何在Jenkins上每15分钟运行一次cron作业?这是我尝试过的:在Jenkins上,我有一个作业... 查看详情

jenkins cron:每 3 分钟运行一次,从 1 开始

...4:04:36【问题描述】:我想将Jenkins设置为每3分钟运行一次作业,但不是从0开始。基本上,我有3个作业,我想每分钟循环一次。我可以使用*/3****每3分钟运行一次的第一个作业。但是第二次我尝试了1/3****,它失败了hudson.remoti 查看详情

每三天进行一次 Cron 作业

】每三天进行一次Cron作业【英文标题】:Cronjobeverythreedays【发布时间】:2011-05-3118:37:52【问题描述】:是否可以每三天运行一次cronjob?或者每月10次。【问题讨论】:是的,这是可能的,这属于超级用户。无论月份界限如何,... 查看详情

CRON 命令每 5 分钟运行一次 URL 地址

】CRON命令每5分钟运行一次URL地址【英文标题】:CRONcommandtorunURLaddressevery5minutes【发布时间】:2012-07-0716:23:54【问题描述】:我是cron命令的新手,我需要帮助。我在http://example.com/check/上有一个脚本。cron每5分钟运行一次该URL的命... 查看详情

每天 2:30 运行一次 cron 作业?

】每天2:30运行一次cron作业?【英文标题】:Runningacronjobevery2:30oneveryday?【发布时间】:2014-08-1409:08:54【问题描述】:如果我创建cronjob以每2:30运行一次,该命令会运行吗?(这意味着,我的cron将在每小时90分钟后运行。)类似的... 查看详情

springboot,cron作业同步

在我的SpringBoot应用程序中,基于Cron作业(每5分钟运行一次),我需要在我的数据库中处理2000个产品。现在这些2000产品的处理时间超过5分钟。当第一个Cron作业尚未完成时,我遇到了第二个Cron作业运行的问题。是否有Spring/Cron... 查看详情