我想让一个cron在另一个cron之后运行。例如: Cron A在下午01:00结束,cron B在下午01:01开始问题是我不知道cron A什么时候结束。
我检查了crontab语法。它没有为此目的提供任何参数。
我的实际情况是:
# This cron must run first.
? ? * * * /usr/local/bin/php -f /path/select_and_print_to_log_file.php
# two these crons runs at the same time.
0 13 * * * /usr/local/bin/php -f /path/update_user.php
0 13 * * * /usr/local/bin/php -f /path/update_image.php
# This cron runs right after two above cron completes.
? ? * * * /usr/local/bin/php -f /path/select_and_print_to_log_file.php发布于 2012-01-19 15:39:59
您的第一个作业可能会在完成时生成一个时间戳。
然后,您估计-例如-作业A需要大约60到90分钟。60分钟后,启动作业B。作业B查找时间戳。如果它存在,则启动作业B,否则它将等待一分钟并再次查找。
完成后,作业B删除时间戳,或将其重命名,可能从“todo”改为“done”。您可以在文件中插入当前日期,以检查您的估计是否仍然可接受,或者是否应该进行调整。
发布于 2012-01-19 14:05:40
您可以在第一个cron中使用batch命令来安排第二个任务的运行。
发布于 2012-01-19 13:58:49
在这种情况下(通常是备份场景,我不想因为有并发备份而导致磁盘崩溃),我会编写一个执行cron调用的脚本,并在脚本中让实际任务串行运行。
类似于:
#!/bin/bash
/usr/local/bin/php -f /path/update_user.php
/usr/local/bin/someOtherTaskToRunSecondYMMV.
https://stackoverflow.com/questions/8921659
复制相似问题