Я хотел бы написать приложение, которое интенсивно использует cron
. Он будет выполнять программы на Python, которые запускаются менее чем за секунду каждую минуту.
Как грива этих строк:
*/1 * * * * python crtip.py parameters
мой crontab -l
может иметь? Как это работает? Разветвляется ли оно для каждой запланированной работы?
Спасибо,
cron
scalability
Хуанхо Конти
источник
источник
Ответы:
Чтобы ответить на ваши вопросы:
Я не знаю ни одного максимального количества строк в crontab. Тем не менее, более нескольких сотен строк, вероятно, довольно необычны (следовательно, не очень хорошо протестированы), а также сложны в обслуживании. Так что я бы, вероятно, избегал превышения этого.
Да.
Тем не менее, на
cron
самом деле обычно не используется для того, что вы описываете. Если вам нужно вызывать программу так часто и с таким большим количеством различных параметров, возможно, более уместным является написание какого-либо процесса «демон / сервер». Преимущества будут:Возможно, вы могли бы более подробно описать, сколько вызовов вам нужно, с какими параметрами и для какой цели. Тогда мы можем помочь лучше.
источник
Вот ответы для одного демона cron, cron Диллона (dcron), разработчиком которого я являюсь. В распространении есть множество демонов cron, и ответы будут разными. Vixie cron, вероятно, самый распространенный; Я не знаю ответов на это.
В любом случае, для cron Диллона пользователь может иметь 256 значащих строк в своем crontab (это настраивается во время компиляции). Root может иметь гораздо больше (я думаю, 65535). Плюс root может иметь несколько crontabs (один в / var / spool / cron / crontabs / root, плюс столько дополнительных, сколько вы хотите в /etc/cron.d/).
Команды Cron запускаются только один раз в минуту, в начале минуты. Вы можете запускать 60 различных команд каждую минуту и просто добавлять к ним префикс
sleep 1
,sleep 2
и так далее. Но я сомневаюсь, что это лучшее решение для того, что вы имеете в виду.Да, в нашей реализации каждый cronjob разветвляется в отдельный процесс. Если есть какой-либо вывод в stdout или stderr, еще один процесс разветвляется для отправки по почте.
источник
Да, это будет развилка для каждого cronjob. Но если ваш сервер даже умеренно мощный, я думаю, вы не столкнетесь с какими-либо проблемами в ближайшее время. Мои личные домашние страницы работают на очень старом Pentium III 1,1 ГГц / 512 МБ ОЗУ / медленном IDE HD, и он не страдает от запуска около 15 различных cronjobs каждый час.
Если ваши cronjobs чрезвычайно требовательны к процессору или вводу / выводу, то ваш пробег может отличаться, но «они работают менее чем за секунду», что заставляет меня думать, что вы не увидите никаких проблем вообще. Давай, подумай что-нибудь более сложное, если время скажет тебе сделать это.
источник
У меня была симуляционная проблема, связанная с управлением многими процессами в моем crontab. Я написал один основной скрипт, который перечислял все исполняемые файлы и ссылки в определенной папке (предоставленной в командной строке) и выполнял их последовательно. Этот сценарий я поместил в crontab, например, с параметром «monitor», который будет запускаться каждую минуту и выполнять все сценарии в «$ BASEFOLDER / monitor». Таким образом, вы также можете иметь записи, которые запускаются каждый час, в определенные дни, один раз утром, один раз вечером ...
Мой основной сценарий делает намного больше, чем, например, предоставляет определенный гарантированный набор переменных среды, унифицированное ведение журнала и некоторые специфичные для приложения вещи, но я надеюсь, что вы поняли идею. Это несколько похоже на систему cron.daily / cron.hourly, которую используют некоторые дистрибутивы.
источник