运行 几个永远的脚本

Running several scripts with forever

我在一个目录下有好几个脚本,每个脚本都叫bot,还有编号,从1到脚本的编号。

我想做的是以某种方式 运行 通过终端的 1 个命令行的所有脚本(使用 Ubuntu),我使用 forever 命令 运行脚本不停等

你能通过终端或使用节点 js 脚本来实现吗?

是否有任何其他像 forever 这样的命令可以为我完成?

您可以通过命令行使用命令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": ""
  }
]

然后你只需要通过 forever 命令 运行 JSON 文件。 示例:

forever start apps.json

您可以查看更多关于 forever here 的信息。

我的回答与@Nikita Ivanov 的回答相同,但使用了 pm2。我个人比较喜欢pm2,它也和forever一样使用config文件,不过可以是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模块,在js脚本中将pm2作为一个模块来使用。

有关详细信息,请参阅 PM2 DOCS