永远运行几个脚本

时间:2018-06-08 08:39:25

标签: node.js ubuntu forever

我在目录中有几个脚本,每个脚本都称为bot及其编号,从1到脚本数。

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

您可以通过终端或使用节点js脚本吗?

还有其他命令,比如永远会为我做这件事吗?

2 个答案:

答案 0 :(得分:1)

您可以通过命令行使用命令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 here的更多信息。

答案 1 :(得分:1)

我的答案与@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