gpt4 book ai didi

javascript - 重新启动 bitcoind 守护进程,以防 Node.js 代码崩溃

转载 作者:太空宇宙 更新时间:2023-11-04 02:12:59 30 4
gpt4 key购买 nike

我需要编写一个 node.js 代码来启动 bitcoind 守护进程命令并继续监视它,如果它崩溃,进程应该重新启动。

我知道有命令行 npm 模块,例如 foreverforver-monitorpm2,但我需要知道如何在代码中使用它们,而不是将它们全局安装在系统上。

原因是我将在 Electron App 中交付此代码,而最终用户的计算机上不会安装任何 node.js 或 npm。

我使用了这段代码,它给出了错误:

代码:

var forever = require('forever-monitor');
var child = forever.start(['./bitcoind'], {
max : 1,
silent : true
});

child.on('exit', function () {
console.log('bitcoind has exited');
});

child.start();

错误:

CONSOLE$ ps aux | grep bitcoind
satinder 32579 0.0 0.0 2432804 808 s001 S+ 5:54pm 0:00.00 grep bitcoind
CONSOLE$ node test.js
/Users/satinder/example/node_modules/eventemitter2/lib/eventemitter2.js:290
throw arguments[1]; // Unhandled 'error' event
^

Error: Cannot start process that is already running.
at /Users/satinder/example/node_modules/forever-monitor/lib/forever-monitor/monitor.js:158:26
at doNTCallback0 (node.js:428:9)
at process._tickCallback (node.js:357:13)
at Function.Module.runMain (module.js:459:11)
at startup (node.js:136:18)
at node.js:972:3
CONSOLE$ ps aux | grep bitcoind
satinder 31931 0.1 0.3 2516556 23964 s000 SN 4:58pm 0:01.25 ./bitcoind
satinder 31939 0.0 0.0 2450212 832 s000 S+ 4:58pm 0:00.00 grep bitcoind
CONSOLE$

我认为原因是 bitcoind 当启动时它没有将进程保持在前台,并将其推送到后台?从forever模块的监视器中它显示进程已退出?我不确定。

有什么可以帮忙的吗?

提前致谢。

最佳答案

看来您在进程终止之前调用了 child.start();

来自永久监视器文档 how to spawning-a-non-node-process .

你应该尝试:

const forever = require('forever-monitor');
const child = forever.start(['./bitcoind'], {
max : 1,
silent : true
});

child.on('exit', function () {
console.log('bitcoind has exited');
child.start()
});

关于javascript - 重新启动 bitcoind 守护进程,以防 Node.js 代码崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41373438/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com