Как cron внутренне планирует работу? - PullRequest
35 голосов
/ 21 октября 2010

Как "современные" cron демоны внутренне планируют свою работу?Некоторые crond используются для планирования пробежки через at.Таким образом, после записи crontab crond:

  1. Разбирает crontab для всех будущих событий и спит для интервалов?определить, соответствует ли текущее время шаблону расписания?
  2. Другое?

Спасибо,

1 Ответ

52 голосов
/ 10 ноября 2010

В этом вопросе слышно несколько сверчков.Хороший RTFC с некоторыми бумагами для моделирования отдельных событий и Википедией:

http://en.wikipedia.org/wiki/Cron#Multi-user_capability

Алгоритм, используемый этим кроном, следующий:

  1. При запуске найдите файл с именем .crontab в домашних каталогах всех владельцев учетных записей.
  2. Для каждого найденного файла crontab определите, когда в будущем будет выполняться каждая команда.
  3. Поместите эти команды в список событий Franta-Maly с соответствующим временем и указателем времени из пяти полей.
  4. Введите основной цикл:
    1. Изучите запись задачи в заголовкеиз очереди, вычислите, как далеко в будущем она будет выполняться.
    2. Сон в течение этого периода времени.
    3. При пробуждении и после проверки правильного времени выполните задание во главеочереди (в фоновом режиме) с правами пользователя, который ее создал.
    4. Определите, когда в будущем в следующий раз запустите эту команду, и поместите ее обратно в список событий в это время
...