【问题标题】:Randomly run a node script file随机运行一个节点脚本文件
【发布时间】:2022-01-23 01:46:10
【问题描述】:
我正在使用forever 来保持节点脚本运行:
forever start script1.js
但我需要随机运行文件...
例如:
- 运行节点script1.js
- 运行节点script2.js
- 运行 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