Задать вопрос
@Ayk72

Как работает очередь crontab?

Добрый день!

Подскажите, как работает очередь cron'a в такой ситуации:

*/1 * * * * curl http://site.ru/index.php?do=parser; /bin/sleep 6; curl http://site.ru/index.php?do=parser; /bin/sleep 6; curl http://site.ru/index.php?do=parser; /bin/sleep 6; curl http://site.ru/index.php?do=parser; /bin/sleep 6; curl http://site.ru/index.php?do=parser; /bin/sleep 6; curl http://site.ru/index.php?do=parser; /bin/sleep 6;  curl http://site.ru/index.php?do=parser; /bin/sleep 6;  curl http://site.ru/index.php?do=parser; /bin/sleep 6;  curl http://site.ru/index.php?do=parser; /bin/sleep 6;  curl http://site.ru/index.php?do=parser


У меня 2 варианта:
1. Каждые 6 секунд, независимо от того, получен ли ответ от предыдущего curl, начинать новый curl запрос.
2. Через каждые 6 сек. после того, как был получен ответ curl выполнять новый запрос.

Просто на деле, вместо 6 секунд, выходит 10-12.
Спасибо!
  • Вопрос задан
  • 641 просмотр
Подписаться 1 Оценить Комментировать
Решения вопроса 1
saboteur_kiev
@saboteur_kiev
software engineer
каждую минуту (в какую-то секунду,не обязательно в 00 секунд), начинает выполняться скрипт, который выглядит как

curl site.ru/index.php?do=parser;
/bin/sleep 6;
curl site.ru/index.php?do=parser;
/bin/sleep 6;
... (всего 10 раз)

Команды выполняются последовательно, следовательно выполняется первый curl, затем sleep на 6 секунд, затем выполняется следующий curl.
Curl выполняется не мгновенно, поэтому между двумя курлами будет 6 секунд + время выполнения предыдущего curl.

Судя по всему человек, который это писал, понятия не имеет о циклах и запуске процессов в фоне, команду можно сократить до

for var in {1..10}; do sleep 6; curl site.ru/index.php?do=parser;done
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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