如何设置CRON作业在Linux中每10秒运行一次?

dev*_*234 25 php linux apache cron

我需要CRON从开始时间开始每隔10秒就开一份工作.

在Linux中如何CRON从开始工作起每隔10秒就运行一次作业?

我想按照以下方式做 -

当我在04:28:34提出请求(或开始)它应该从04:28:44开始而不是在4:28:40

这就是我所做的,我正在努力,

# m h  dom mon dow   command
*/10 * * * * /usr/bin/wget http://api.us/application/
Run Code Online (Sandbox Code Playgroud)

我在这里做了什么错误,不是每10秒钟就会工作一次?

Rod*_*ent 49

为了详细说明Sougata Bose的答案,我认为OP希望命令从开始时间开始每隔10秒运行一次; 在第一分钟之后和之后的每一分钟之后不是10秒.

cron只有1分钟的分辨率(我认为有其他工具可能有更好的分辨率,但它们不是unix的标准).

因此,要解决您的问题,您需要60秒/ 10秒= 6个cron作业,每个作业都有一个睡眠状态.

例如,运行crontab -e并将以下行添加到您选择的编辑器中:

* * * * * ( /usr/bin/wget http://api.us/application/ )  
* * * * * ( sleep 10 ; /usr/bin/wget http://api.us/application/ )  
* * * * * ( sleep 20 ; /usr/bin/wget http://api.us/application/ )  
* * * * * ( sleep 30 ; /usr/bin/wget http://api.us/application/ )  
* * * * * ( sleep 40 ; /usr/bin/wget http://api.us/application/ )  
* * * * * ( sleep 50 ; /usr/bin/wget http://api.us/application/ )  
Run Code Online (Sandbox Code Playgroud)

  • cron 生成器 https://codepen.io/04/full/YzYLPqr (3认同)

小智 24

另一种选择是编辑您的 crontabcrontab -e并编写:

* * * * * for i in {1..6}; do /usr/bin/wget http://api.us/application/ & sleep 10; done
Run Code Online (Sandbox Code Playgroud)

  • 由于睡眠仅在命令完成后执行,因此间隔可能会超过 10 秒,具体取决于命令需要多长时间。应该考虑到这一点。 (7认同)
  • 欢迎来到SO!下次,请为您的答案添加更多解释。 (5认同)

jav*_*301 14

在秒字段中使用逗号也有效:

0,10,20,30,40,50 * * * * *
Run Code Online (Sandbox Code Playgroud)

  • 它在 Linux 上不起作用,在 Ubuntu 20.04 上进行了测试,并且它不执行该作业。正如其他回复中所指出的,也许这适用于 Mac 和其他基于 crontab 符号的作业调度工具,但不适用于 Linux 的 crontab。 (7认同)
  • 这并不像其他答案那样让我害怕,它有效并且需要更多的支持。 (4认同)

And*_*idy 10

*/10 * * * * 将每 10 分钟运行一次。
*/10 * * * * * 将每 10 秒运行一次。

您可以查看cron 编辑器以获取更多选项。

  • 仅供参考,这不起作用。你会得到一个错误 (6认同)
  • 这是行不通的。Linux 上的 Cron 不支持此表示法。crontab.cronhub.io 具有误导性,它没有说明哪些平台支持此功能。这适用于 Mac,但不适用于标准 Linux 服务器 (3认同)
  • 我猜这在 ubuntu 系统上不起作用 (2认同)

Sou*_*ose 7

您已在分钟中指定了*/10.Cron只允许至少一分钟.你可以尝试这个 -

* * * * * ( sleep 10 ; /usr/bin/wget http://api.us/application/)
Run Code Online (Sandbox Code Playgroud)

哪个会在睡眠时每10秒执行一次.

  • OP正在请求一些按需变化的时间表(“ *当我在04:28:34发出请求(或开始)时,它应该在04:28:44 *开始)”,而不是固定的时间表。诚然,这听起来像是对cron的奇怪要求。 (2认同)

小智 7

watch代替使用;例如:

watch -n10 -x your_command
Run Code Online (Sandbox Code Playgroud)


Čam*_*amo 5

如果某件事应该每 10 秒运行一次,那么它不一定是 cron 作业。它可以是一个无限循环的脚本,其中包含 sleep,如下所示:

while true
do
  # or whatever command you need to run
  rm -rf /var/www/some-directory
  sleep 10
done
Run Code Online (Sandbox Code Playgroud)

并运行它

nohup bash my-endless-script.sh 
Run Code Online (Sandbox Code Playgroud)

这将在后台运行它,并且如果您关闭终端也会继续。

您可以使用kill命令终止运行。