【问题标题】:Randomly run a node script file随机运行一个节点脚本文件
【发布时间】:2022-01-23 01:46:10
【问题描述】:

我正在使用forever 来保持节点脚本运行:

forever start script1.js

但我需要随机运行文件...

例如:

  1. 运行节点script1.js
  2. 运行节点script2.js
  3. 运行 script3.js

...

有什么方法可以让我有一个 master.js 文件,每次随机运行这些脚本文件?然后我就可以永远使用这个主人了。

forever start master.js > 随机运行 script1.js script2.js 等。

【问题讨论】:

  • 你想从主服务器运行这些文件吗?

标签: javascript node.js npm


【解决方案1】:

首先,定义“随机”。你的意思是随机文件运行的每设定时间? 第二,你希望worker脚本的生命依赖于master吗?

如果我明白你的意思,那么这很简单

let {fork} = require("child_process")
setInterval(() => {
    let scripts = ["script1.js", "script2.js", "script3.js"] //you can provide full path
    let randomScript = scripts[Math.floor(Math.random() * Math.floor(scripts.length))]
    fork(randomScript) //optionally, you can inherit stdio if you wish to see output
}, 20000) //time period in ms, in this case 20 seconds

我在这里使用了 fork,它只适用于 js 脚本,但如果您希望执行文件或生成另一个进程,我建议您查看 here

【讨论】:

    【解决方案2】:

    用代码创建一个master.js

     const {exec} = require('child_process');
     function getRandomNumberBetween(min,max){
        return Math.floor(Math.random()*(max-min+1)+min);
     }
     switch (getRandomNumberBetween(1,3)) {
        case 1:
            exec('forever start script1.js')
            break;
        case 2:
            exec('forever start script2.js')
            break;
        case 3:
            exec('forever start script3.js')
            break;
        default:
            break;
        }
    

    运行文件node master

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-01
      • 2019-08-28
      • 1970-01-01
      • 2021-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多