5

На этой странице http://wiki.ci.uchicago.edu/I2U2/WebalizerConfiguration предлагается переименование /etc/cron.daily/logrotate, поэтому оно следует после /etc/cron.daily/webalizer - webalizer должен быть выполнен до того, как будет запущен logrotate.

Это правда ? Будет ли cron.daily ждать окончания работы, прежде чем начинать следующую?

2 ответа2

5

Скрипты в 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, которое будет запускать их параллельно, если они перекрываются.

1

Я только что создал тестовое задание 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 выполняются по-другому.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .