如何每X分钟运行一次cronjob?

2022-08-30 07:11:31

我在 cronjob 中运行 PHP 脚本,并且我想每 5 分钟发送电子邮件一次

我当前(crontab)cronjob:

10 * * * * /usr/bin/php /mydomain.in/cromail.php > /dev/null 2>&1

cronmail.php如下所示:

<?php
$from = 'D'; // sender
$subject = 'S';
$message = 'M';
$message = wordwrap($message, 70);
mail("myemail@gmail.com", $subject, $message, "From: $from\n");
?>

但是我有 30 分钟没有收到使用此配置的电子邮件。


答案 1

在文件中,这些字段包括:crontab

  • 整小时的分钟。
  • 一天中的小时。
  • 每月的某一天。
  • 一年中的月份。
  • 星期几。

所以:

10 * * * * blah

表示每小时执行 10 分钟。blah

如果您希望每五分钟一次,请使用:

*/5 * * * * blah

意味着每分钟,但只有每五分之一,或者:

0,5,10,15,20,25,30,35,40,45,50,55 * * * * blah

对于不理解表示法的旧可执行文件。cron*/x

如果在此之后它似乎仍然不起作用,请将命令更改为如下所示的内容:

date >>/tmp/debug_cron_pax.txt

并监视该文件,以确保每五分钟写入一次内容。如果是这样,则您的PHP脚本有问题。如果不是,则表示您的守护程序有问题。cron


答案 2

您的 CRON 应如下所示:

*/5 * * * *

当您需要测试CRON设置时,CronWTF非常有用。

将输出通过管道传输到日志文件中可能是一个好主意,这样您就可以查看脚本是否也抛出了任何错误 - 因为您不会在终端中看到它们。

还可以尝试在PHP文件的顶部使用shebang,以便系统知道在哪里可以找到PHP。如:

#!/usr/bin/php

这样你就可以这样称呼整个事情。

*/5 * * * * php /path/to/script.php > /path/to/logfile.log


推荐