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

Как правильно в pm2 запускать cron scheduller?

Привет, ребят,

Подскажите, что не нак делаю с pm2
Скрипт парса по какой то причине запускается чаще, чем в 15 минут, не доходит до конца, и начинает писать в тот же лог файл. И так по кругу.
Как сделать, чтобы скрипт доходил до конца и процесс завершался до следующей крон итерации?

pm2 start "cd /var/www/site && make parse > data/logs/$(date +%F_%T).log" --name parseJob --cron "*/15 * * * *"


Есть небольшая вероятность, что он принимая некие сигналы от puppeteer рестартует, но это как то странно.
  • Вопрос задан
  • 158 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
kprod
@kprod
Fullstack-разработчик
Ответ для тех, кто всё еще ищет

Дело в том, что pm2 был придуман для того, чтобы запускать процессы на сервере и они работали 24/7, а в случае если произошла ошибка - процесс автоматически перезапускался. В вашем же случае скрипт конечный:
- Запуск скрипта
- Проход всех итераций
- Завершение работы скрипта

Для pm2 завершение работы скрипта служит сигналом о том, что его необходимо перезапустить, даже если вы укажите параметр --cron. Для того, чтобы скрипт запускался действительно по крону, необходимо явно указать, что автоматический перезапуск не требуется, с помощью ключа --no-auorestart.

Например:
pm2 start index.js --cron "* * * * *" --no-autorestart
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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