Назад | Перейти на главную страницу

cron с одинаковым временем выполнения

Предположим, у меня настроено одновременное выполнение нескольких заданий cron: выполняются ли они параллельно или только одно за другим?

(Мой случай - сжатие Debian с cronjobs, помещенным в /etc/cron.d/mycronjobs).

Для полноты картины вакансии, например, в /etc/cron.{hourly,daily,weekly ,monthly} выполняются последовательно. Сценарий run-parts перебирает все файлы в этом каталоге.

02 4 * * * root run-parts /etc/cron.daily

Таким образом, вы можете использовать это в сочетании с соглашением об именах (аналогично нумерации в /etc/init.d/rc*.d например), чтобы задания выполнялись последовательно.

Задачи, перечисленные в cron, будут выполняться параллельно, как обычно это делают процессы. Нет способа быть уверенным, что запустится первым, и нет возможности в cron убедиться, что задача A завершена до запуска задачи B.

Cron - это демон (служба), который работает постоянно; однако он читает crontab раз в минуту.

Точная последовательность выполнения заданий будет зависеть от реализации crond вашей системы.

Свободные файлы, которые некоторые дистрибутивы помещают в /etc/cron.d/, сканируются на предмет их настроек таймера cron, поскольку эти файлы соответствуют обычному синтаксису crontab (5).

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

Они будут работать параллельно. Вы можете использовать следующие методы для последовательного запуска процессов.

# Use a semicolon to run command2 after command1 has completed
02 4 * * * /path/to/command1 ; /path/to/command2

# Use two ampersands to run command2 after command1 has completed successfully.
02 4 * * * /path/to/command1 && /path/to/command2

# Use two vertical rules to run command2 after command1 has completed unsuccessfully.
02 4 * * * /path/to/command1 || /path/to/command2