Запуск нескольких скриптов с навсегда - PullRequest
0 голосов
/ 08 июня 2018

У меня есть несколько сценариев в каталоге, каждый из которых называется bot и его номером, от 1 до количества сценариев.

Что я хотел бы сделать, так это как-то запустить все сценарии с помощью1 командная строка через терминал (с помощью Ubuntu), я использовал команду forever для запуска скрипта без остановки и т. Д.

Не могли бы вы сделать это через терминал или с помощью скрипта узла js?

Есть ли другие команды, такие как forever, которые бы сделали это для меня?

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Мой ответ такой же, как ответ @Nikita Ivanov, но с pm2.Мне лично нравится pm2, который также использует конфигурационный файл, как и навсегда, но это может быть файл js, json или yaml.

// JS File
module.exports = {
  apps : [{
    name: "bot1",
    script: "./bot1.js",
    watch: true, // some optional param just for example
    env: {
      "NODE_ENV": "development",
    }, // some optional param just for example
    env_production : {
       "NODE_ENV": "production"
    } // some optional param just for example
  },{
    name: "bot2",
    script: "./bot2.js",
    instances: 4, // some optional param just for example
    exec_mode: "cluster" // some optional param just for example
  }]
}

Теперь, если вы не знаете, сколько существует скриптов,Хорошо.Поскольку это JS, вы можете написать скрипт для получения списка всех файлов в каталоге и создать массив, аналогичный приведенному выше, и использовать этот конфиг для pm2.

module.exports = (function () {
    // logic to get all file names and create the 'apps' array
    return {
        apps: apps
    }
})()

Кроме того, вы можететакже используйте модуль pm2 npm и используйте pm2 как модуль в js-скрипте и сделайте это.

См. PM2 DOCS для получения дополнительной информации.

0 голосов
/ 08 июня 2018

Вы можете использовать его через командную строку с командой forever.

Вам потребуется создать файл JSON с нужными вам файлами.

Пример:

[
  {
    // App1
    "uid": "app1", // ID of the script.
    "append": true,
    "watch": true,
    "script": "bot1.js", // Name of the script
    "sourceDir": "" // Where the script is located. If it's in the
                    // same location as the json file, leave it ""
  },
  {
    // App2 = > Same as app1, just different script name.
    "uid": "app2",
    "append": true,
    "watch": true,
    "script": "bot2.js",
    "sourceDir": ""
  }
]

Затем вам нужно просто запустить файл JSON с помощью команды forever.Пример:

forever start apps.json

Более подробную информацию о forever можно посмотреть здесь .

...