#javascript #shell
Вопрос:
чтобы запустить один и тот же сценарий несколько раз, в настоящее время я использую ;
Например, я запущу что-то вроде этого
node RocketLaunch.js;node RocketLaunch.js;node RocketLaunch.js
Это отлично работает, и я запускаю свой скрипт 3 раза подряд. Мне интересно, есть ли простой способ запустить эти 3 с промежутком в 1 час?
Редактировать — Спасибо за ответы, я новичок в изучении программирования, поэтому приношу извинения за публикацию этого в JS, так как это похоже на вопрос, не относящийся к JS.
Дополнительная информация — Как я хочу использовать его, запускайте этот скрипт каждые 1 час, скажем, 20 часов / раз. Вся работа занимает около 5 минут после запуска сценария, и я хочу, чтобы он выполнялся каждый час и выполнял эту работу за 5 минут.
Поэтому, возможно, запустите команду на уровне Bash, где я смогу ввести ее 20 раз с задержкой в час. Он работает каждый час в течение 20 часов, а затем я могу повторить все это снова.
Комментарии:
1. Поставьте
sleep 3600
между ними.2. На самом деле это не вопрос JavaScript (хотя, конечно, вы также можете реализовать тайм-аут в JavaScript). man7.org/linux/man-pages/man1/sleep.1.html
3. И если вы хотите запускать его каждый час, используйте
cron
.4. Если вы используете его в облаке. затем используйте Расписание облачных функций. или Работа в Cron.
Ответ №1:
Вот как я обычно делаю это в bash:
for x in {1..3};
do
node RocketLaunch.js
sleep 3600
done
Цикл {1..3}
for сообщает, чтобы он сделал это 3 раза, и функция сна принимает в качестве аргумента количество секунд. (3600 = 60 секунд * 60 минут)
Ответ №2:
Вот обновленный ответ на ваш вопрос
Теперь просто запустите node RocketLaunch.js 1 20
эту команду, чтобы сообщить сценарию, чтобы он выполнялся каждые 1 час в течение следующих 20 часов.
const rockets = {
launched: () => {
//your job
console.log("I'm A Rocket");
}
};
var arg = process.argv;
const times = Number(arg.slice(2)[1]);
const hours = Number(arg.slice(2)[0]) * 3600000; // to make the hour;
function launch() {
var x = 1
//kick off rockets at script start
rockets.launched();
timer = setInterval(() => {
rockets.launched();
x
if (x === times) {
clearInterval(timer);
}
}, hours) //1000 ms = 1 second
}
launch();