Как крон работает?

Я хотел бы записать приложение, которое это в большой степени использует cron. Это выполнит программы Python, которые работают в меньше, чем секунда каждую минуту.

Как грива этого выравнивает:

*/1 * * * * python crtip.py parameters

мой crontab -l может иметь? Как делает это работает? Действительно ли это разветвляется для каждого запланированного задания?

Спасибо,

2
задан 17.08.2010, 12:27

4 ответа

Рассматривать Ваши вопросы:

  • Сколько могут иметь строки crontab?

Я не знаю ни о каком максимальном количестве строк в crontab. Однако больше чем несколько сотен строк являются, вероятно, довольно редкими (следовательно не хорошо протестированный), и также трудно поддержать. Таким образом, я, вероятно, постарался бы не превышать это.

  • Действительно ли это разветвляется для каждого запланированного задания?

Да.

Тем не менее cron не является действительно наиболее часто используемым для вида вещи, которую Вы описываете. Если необходимо вызывать программу так часто и с таким количеством различных параметров, пишущий некоторому демону / серверный процесс является, вероятно, более соответствующим. Преимущества были бы:

  • хороший, объединенный вход (вместо сообщений, выводимых в журнал крона или отправленный по почте)
  • больше управления, о когда запущенные программы (и точность больше чем одной минуты)
  • больше производительности, поскольку Вы не должны всегда разветвляться внутренне
  • легче поддержать/установить, чем гигантский crontab

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

9
ответ дан 08.12.2019, 04:38

Вот ответы для одного демона крона, крон dillon (dcron), из которого я являюсь текущим разработчиком. Существует множество демонов крона в распределении, и ответы будут отличающимися. Крон Vixie является, вероятно, самым широко распространенным; я не знаю ответы для этого.

Так или иначе, для крона dillon, у пользователя может быть 256 значительных строк в их crontab (это настраивается во время компиляции). Корень может иметь намного больше, чем тот (я думаю 65535). Плюс корень может иметь несколько crontabs (тот в/var/spool/cron/crontabs/root, плюс столько дополнительных, как Вы хотите в/etc/cron.d/).

Команды крона только выполняются та однажды минута, в начале минуты. Вы могли иметь 60 различных команд, выполняемых каждую минуту, и просто снабдить префиксом их sleep 1, sleep 2, и так далее. Но я сомневаюсь, что это - лучшее решение для того, что Вы имеете в виду.

Да, в нашей реализации каждый cronjob ветвления в отдельный процесс. Если существует вывод к stdout или stderr, еще один процесс разветвлен для отправки по почте его.

3
ответ дан 08.12.2019, 04:38

Да, это разветвится для каждого cronjob. Но если Ваш сервер даже умеренно мощен, я думаю, что Вы не встретитесь ни с какими проблемами очень скоро. Мои персональные домашние страницы работают на очень старой RAM Pentium III 1,1 ГГц / 512 МБ / замедляют IDE HD, и это не страдает от обтекания 15 различных cronjobs каждый час.

Если Ваши cronjobs являются чрезвычайно CPU или голодным вводом-выводом, то Ваш пробег может варьироваться, но, "они работают в меньше, чем, вторая" часть заставляет меня думать, что Вы не будете видеть проблем вообще. Идите вперед, думайте что-то более сложное, если время говорит Вам делать так.

2
ответ дан 08.12.2019, 04:38

У меня была проблема средства моделирования, имея необходимость справиться с большим количеством процессов в моем crontab. То, что я сделал, было записать один основной сценарий, который перечислил все исполняемые файлы и ссылки в определенной папке (обеспеченный на командной строке) и выполнил их последовательно. Этот сценарий я вставил crontab с, например, параметром "монитора", который будет работать каждую минуту и выполнять все сценарии в "$BASEFOLDER/monitor". Таким образом, у Вас могут также быть записи, которые запускаются каждый час, в определенные дни, однажды утром, однажды вечером...

Мой основной сценарий делает намного больше, чем это, как обеспечивают определенный гарантируемый набор переменных среды, объединенного входа и некоторых специализированных вещей, но я надеюсь, что Вы получаете идею. Это - несколько средство моделирования к cron.daily/cron.hourly системе некоторое использование дистрибутивов.

1
ответ дан 08.12.2019, 04:38

Теги

Похожие вопросы