Как мне запускать один и тот же сценарий снова и снова с задержкой между каждым запуском?

#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();