如何知道 Linux 节点子进程使用的所有资源、连接、套接字等
How to know all the resources, connections, sockets, etc. in use by a Node child-process on Linux
我动态生成一个node脚本,然后通过node fork一个子进程来执行,并将输出传回给父进程
父级:
//...build child.js
var child = require('child_process');
childProcess = child.fork('child.js');
childProcess.on('message',
function(dataFromChild) {
//process data
});
在子进程中
process.send(objectToSend,function() {
//code to send objectToSend
//process.exit(0);
}
实际代码要广泛得多。我还使用 socket.io 和 mysql。我想当我完成处理后,我将关闭子进程中所有打开的数据库连接和套接字。但是,子进程不会退出。如果我在退出点执行 process.exit(0) ,它会退出。我想一定有什么东西是开放的,不允许它自然退出。我怎么知道它是什么?
我尝试了一个简单的子脚本,基本上是一个带有 console.log 语句的单行脚本,用于测试它是否会在没有退出语句的情况下退出。确实如此。
您可以使用linux lsof
程序列出子进程拥有的所有打开的文件描述符。在节点中,active-handles npm 包应该可以帮助您追踪分配的侦听器、超时等。
我动态生成一个node脚本,然后通过node fork一个子进程来执行,并将输出传回给父进程
父级:
//...build child.js
var child = require('child_process');
childProcess = child.fork('child.js');
childProcess.on('message',
function(dataFromChild) {
//process data
});
在子进程中
process.send(objectToSend,function() {
//code to send objectToSend
//process.exit(0);
}
实际代码要广泛得多。我还使用 socket.io 和 mysql。我想当我完成处理后,我将关闭子进程中所有打开的数据库连接和套接字。但是,子进程不会退出。如果我在退出点执行 process.exit(0) ,它会退出。我想一定有什么东西是开放的,不允许它自然退出。我怎么知道它是什么?
我尝试了一个简单的子脚本,基本上是一个带有 console.log 语句的单行脚本,用于测试它是否会在没有退出语句的情况下退出。确实如此。
您可以使用linux lsof
程序列出子进程拥有的所有打开的文件描述符。在节点中,active-handles npm 包应该可以帮助您追踪分配的侦听器、超时等。