Крон бежит за другим Кроном - PullRequest
2 голосов
/ 19 января 2012

Я хочу установить запуск cron после другого cron. Например: Cron A заканчивается в 01:00 PM, Cron B запускается в 01:01 PM. Проблема в том, что я не знаю, когда закончится 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

Ответы [ 3 ]

2 голосов
/ 19 января 2012

Вы можете использовать команду batch внутри первого cron, чтобы запустить вторую вещь.

1 голос
/ 19 января 2012

Ваша первая работа может создать временную метку, когда закончите.

Затем вы оцениваете, например, что для работы А требуется от 60 до 90 минут.Через 60 минут вы начинаете задание B. Задание b ищет метку времени.Если оно присутствует, начинается задание B, иначе оно ждет минуту и ​​смотрит снова.

После завершения задания B удаляет отметку времени или переименовывает ее, возможно, с «todo» на «done».Вы можете вставить текущую дату в файл, чтобы проверить, является ли ваша оценка все еще приемлемой или должна быть скорректирована.

1 голос
/ 19 января 2012

Что я делаю в таких случаях (обычно сценарий резервного копирования, в котором я не хочу перезаписывать диск с помощью одновременных резервных копий), это написать сценарий, который вызывает cron, и в этом сценарии текущие задачи выполняются последовательно.

Что-то вроде:

#!/bin/bash

/usr/local/bin/php -f /path/update_user.php
/usr/local/bin/someOtherTaskToRunSecond

ГММВ.

...