Как сделать рабочие часы для скрипта
-
js это все конечно весело, но каждый инструмент нужен для своего, вот вариант на crontab, оно будет и легче по ресурсам.
* 8-17 * * * /usr/bin/node /path/to/script.js >> /var/log/myjob.log 2>&1 -
можно перезапускать по крону или по pm2 скрипт (pm2 будет каждый раз перезапускаться после завершения при стандартных настройках)
а проверку можно сделать еще и в скриптеconst now = new Date(); const hour = now.getHours(); if (hour < 8 || hour > 17) { process.exit(0); } // тут ваша логика -
Пользователь @hannadev написал в Как сделать рабочие часы для скрипта:
function workingHours(data = Date ()) {
const hour = data.getHours();
return hour >= 8 && hour < 17;
}мне кажется код не рабочий, ты его запускала? у data должен быть новый экземпляр new Date()
@Mugiwara Поправила!!!
-
@Linus Вы чего напали то людоеды блин…

-
можно перезапускать по крону или по pm2 скрипт (pm2 будет каждый раз перезапускаться после завершения при стандартных настройках)
а проверку можно сделать еще и в скриптеconst now = new Date(); const hour = now.getHours(); if (hour < 8 || hour > 17) { process.exit(0); } // тут ваша логика@Mugiwara Вот эта нормальная тема, а как в pm2 настроить такое то?
-
@hannadev
пример скрипта который выполняет что-то// script.js async function main() { console.log(`[${new Date().toISOString()}] Запуск скрипта через PM2`); // Эмуляция работы await new Promise(r => setTimeout(r, 2000)); console.log('Работа выполнена.'); // ОБЯЗАТЕЛЬНО: завершаем процесс, чтобы PM2 не перезапускал его мгновенно, // а ждал следующего тика Cron. process.exit(0); } main();вот команда pm2 где
30- количество минут которое он ждет до следующего рестарта, нужно указать не меньше минут чем время выполнения скрипта( его бы надо примерно знгать)pm2 start script.js --cron "*/30 8-17 * * *" --no-autorestartеще момент: pm2 работает так, что если выйдет ошибка - то скрипт сразу перезапускается
-
@hannadev
пример скрипта который выполняет что-то// script.js async function main() { console.log(`[${new Date().toISOString()}] Запуск скрипта через PM2`); // Эмуляция работы await new Promise(r => setTimeout(r, 2000)); console.log('Работа выполнена.'); // ОБЯЗАТЕЛЬНО: завершаем процесс, чтобы PM2 не перезапускал его мгновенно, // а ждал следующего тика Cron. process.exit(0); } main();вот команда pm2 где
30- количество минут которое он ждет до следующего рестарта, нужно указать не меньше минут чем время выполнения скрипта( его бы надо примерно знгать)pm2 start script.js --cron "*/30 8-17 * * *" --no-autorestartеще момент: pm2 работает так, что если выйдет ошибка - то скрипт сразу перезапускается
@Mugiwara То есть хочешь сказать отпадает смысл вообще в
setInterval()? -
@kirilljsx Сначала надо понять какая цель у интервала, можно и без него перезапускать скрипт после завершения через pm2, я же привел пример, когда надо задать именно интервал? а так каждый газует как хочет, вон, предложили кронтаб использовать, самый простой и производительный вариант.
Но если ты скрипт будет все равно на pm2 вешать, что скорее всего так и произойдет, то удобнее его интегрировать сразу. А если без pm2, то тебе еще ошибки ловить, как-то перезапускать если что-то не так
-
@kirilljsx Сначала надо понять какая цель у интервала, можно и без него перезапускать скрипт после завершения через pm2, я же привел пример, когда надо задать именно интервал? а так каждый газует как хочет, вон, предложили кронтаб использовать, самый простой и производительный вариант.
Но если ты скрипт будет все равно на pm2 вешать, что скорее всего так и произойдет, то удобнее его интегрировать сразу. А если без pm2, то тебе еще ошибки ловить, как-то перезапускать если что-то не так
@Mugiwara А вот как раз напрашивается вопрос производительности и оптимизации что лучшее поебывать
setInterval()илиpm2
Как говориться есть 2 стула)) -
Очередной вкатун)))
-
© 2024 - 2025 ExLends, Inc. Все права защищены.