Задать вопрос
@mr_ko
Javascript, Node.js. React.js, Vue.js, Wordpress

Как правильно запуститьчерез crontab скрипт/url который выполняется долго (20-25 мин)?

Создаю в crontab запись
* */6 * * * /usr/bin/wget -q -O- http://my-site/my_url

Пока по указанному url просто отправлялась почта, все было ок. Но когда я подключил "Боевой скрипт" который генерирует отчет в среднем 20мин, то происходит следующее:
- Крон запускается как и положено, но на протяжении часа с момента запуска каждую минуту повторяется не дожидаясь окончания процесса.

Собственно вопрос в том как мне заставить крон дождаться выполнения процесса.
  • Вопрос задан
  • 669 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 2
0 */6 * * * /usr/bin/wget -q -O- http://my-site/my_url

если по вашему правилу, то каждую минуту каждого шестого часа
Ответ написан
@azazelpw
Linux SA
0 */6 * * *
* - каждую минуту
* /6 - каждые 6 часов

Вам нужно указать минуту запуска. и тогда вы каждые 6 часов будете запускать свой скрипт
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@ShamblerR
LOCK_FILE=/tmp/wget.lock
* */6 * * * /usr/bin/wget -q -O- http://my-site/my_url
Ответ написан
Melkij
@Melkij
PostgreSQL DBA
Во-первых, запускайте его через CLI. Через http его может убить по таймауту слишком много кто, от wget'а до веб-серверов.
Во-вторых, в код скрипта добавьте проверку с ограничением числа запущенных процессов. Классически это реализуется через pid-файл.
Ответ написан
@ange007
Программист, просто программист.
Может как вариант просто сделать запуск крона на большее время ( хотя матёрый у Вас скрипт видимо )?
Ну а так - держать в БД или файле переменную отвечающую за состояние работы скрипта, и не запускать его по новой при её наличии.
Ответ написан
Ваш ответ на вопрос

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

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