Будет ли cron.daily ждать окончания работы, прежде чем начинать следующую?
На этой странице http://wiki.ci.uchicago.edu/I2U2/WebalizerConfiguration предлагается переименование /etc/cron.daily/logrotate, поэтому оно следует после /etc/cron.daily/webalizer - webalizer должен быть выполнен до того, как будет запущен logrotate.
Это правда? Будет ли cron.daily ждать окончания работы, прежде чем начинать следующую?
2 ответа
Сценарии в cron.daily
а остальные выполнены с использованием run-parts
если anacron
не установлен. Вы можете увидеть это в /etc/crontab
:
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
run-parts
выполнит каждый исполняемый файл в каталоге и будет ждать завершения каждого из них, прежде чем запускать следующий. Вот тест с использованием этих двух скриптов:
$ cat cron/1test
#!/bin/bash
date
echo script1
sleep 10
date
$ cat cron/2test
#!/bin/bash
date
echo script2
sleep 10
date
Выход:
$ run-parts --verbose cron
run-parts: executing cron/1test
Monday 6 January 10:38:42 EST 2014
script1
Monday 6 January 10:38:52 EST 2014
run-parts: executing cron/2test
Monday 6 January 10:38:52 EST 2014
script2
Monday 6 January 10:39:02 EST 2014
Это отличается от планирования каждого задания в cron, которое будет запускать их параллельно, если они перекрываются.
Я только что создал тестовое задание cron, которое выполняется каждую минуту:
#!/bin/bash
echo "123" >> /home/user/test-file
sleep 100
echo "234" >> /home/user/test-file
Так что я видел наложение в htop
, Я имею в виду, что были периоды времени, когда я видел два процесса, запущенных одновременно. 123
повторили в начале минуты и 234
было отражено в 40 секунд следующей минуты (из-за sleep 100
). За 40 секунд до начала следующей минуты был только один процесс.
Это означает, что cron запускает задания и не ждет их завершения.
Я постараюсь представить это графически:
0 minute 00 seconds 123 <----first execution
1 minute 00 seconds 123 <----second execution
1 minute 40 seconds 234 <----first execution
2 minute 00 seconds 123 <----third execution
2 minute 40 seconds 234 <----second execution
3 minute 00 seconds 123 <----fourth execution
3 minute 40 seconds 234 <----third execution
По крайней мере, это верно для рабочих мест в /etc/crontab
с vixie-cron
на свежем обновленном Gentoo.
Как обнаружил Пол - вещи в cron.daily
выполняет по-другому.