【问题标题】:create cron job from another cron job从另一个 cron 作业创建 cron 作业
【发布时间】:2011-01-26 00:37:10
【问题描述】:

祝大家有美好的一天。我需要这样做:

  • 创建一个 cron 作业(这里没问题)
  • cron 执行一个 php 脚本
  • 如果满足某些条件,我需要使用脚本返回的日期创建另一个 cron

我有 root 访问权限和一切。操作系统是centOS 5.5(即使我认为只要支持crons就真的不重要)

更具体地说,我需要一个 cron 来执行一个 php 脚本,该脚本从数据库(小时、分钟、秒)获取执行另一个脚本的确切时间。数据库可以随时更新。第一个作业每 10 分钟执行一次。

【问题讨论】:

  • "何时执行另一个脚本" -- 您是否需要其他脚本只执行一次?如果是这样,请查看at

标签: php linux cron jobs


【解决方案1】:

您可以简单地创建一个/etc/cron.d/generated crontab 文件,您的脚本将在其中添加生成的条目。

file_put_contents('/etc/cron.d/generated', ' ... entry contents ...', FILE_APPEND');

正如@The MYYN 在他的评论中所建议的那样,at 也可能是一个很好的解决方案,如果您只想执行一次脚本。在 PHP 中你可以这样调用它:

system(sprintf('echo %s|at %s',
    escapeshellarg($command),
    escapeshellarg(date('H:i d.m.y', $timestamp))
);

或者像这样:

$fd = popen(sprintf('at %s', escapeshellarg(date('H:i d.m.y', $timestamp))), 'w');
fwrite($fd, $command);
pclose($fd);

【讨论】:

    【解决方案2】:

    为什么不用'at'?

    如果我对您的理解正确,您正在使用 cron 脚本检查数据库以执行一次性作业 - 执行作业的日期/时间在数据库中,如果您有新的要执行的一次性作业,您想安排它们,但只执行一次。

    at、batch、atq、atrm 命令在 Linux 系统上操纵批处理队列以执行一次性作业。使用 'at' 安排作业,它会运行,然后自动从 'at' 假脱机中删除。

    【讨论】:

      猜你喜欢
      • 2013-03-29
      • 1970-01-01
      • 2011-09-27
      • 1970-01-01
      • 2010-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-25
      相关资源
      最近更新 更多