Tag: 进程

Nodejs进程挂起,我怎么能debugging它或收集转储?

我的nodejs进程在Linux上运行,现在它挂起,CPU是100%。 无论如何,我可以做debugging,find原因吗? 我需要收集转储吗? 谢谢。

Sandbox Node.js child_prosess

我正在创build一个pipe理器,在共享的环境中运行独立的Node.js应用程序。 我有这个master.js : var spawn = require('child_process').spawn, _ = require('underscore'); var env = { PORT: 3001 } _.extend(env, process.env); var child = spawn('node', [ 'child.js' ], { env: env }); // trying to get something like this to work child.on('bindtoaport', function (port) { if (port !== env.PORT) { child.kill(); } }); 显然,最后一个陈述并不存在。 我想拦截系统调用(在它到达系统之前),看看它将绑定到哪个端口,然后如果它是错误的端口,就把它杀掉。 这可能在香草node.js? 还是需要一些疯狂的绑定到一些本地的操作系统模块?

Node.js为什么一个subprocess不能马上启动?

我试图编写一个全局的节点命令行程序,将采取任何(Windows或Unix)控制台命令我给它,并在新的控制台窗口中执行它。 我也希望程序在产生它的进程后退出,所以我使用的控制台没有被运行subprocess的节点脚本阻塞。 这是我迄今为止的简单版本: myScript.js: var exec = require('child_process').exec; exec("start startScript.cmd"); // windows start command opens a new cmd window process.exit(0); startScript.cmd: mkdir test 我也试过这个(但是,即使没有process.exit,这也不起作用): myScript.js: var spawn = require('child_process').spawn; var child = spawn('start', ['startScript.cmd'], { detached: true, stdio: ['ignore', 'ignore', 'ignore']}); child.unref(); process.exit(0); 问题是,调用process.exit()似乎阻止subprocess完全启动,所以什么也没有发生,除非我做一些setTimeout shenanigans。 但是这种行为似乎是随机的 在不同的计算机上,它的行为就像我想要的那样。 两台计算机都有相同版本的节点(v0.10.33)。 除非我删除process.exit行或使用setTimeout,否则目录testing永远不会生成。 任何想法为什么发生这种情况或如何解决它? 请记住,我不想等到subprocess结束。 我希望能够立即返回到我的命令行。 谢谢!

我想使用nodejs使CLI程序asynchronous

具体而言,我想让nodejs进程在可以产生subprocess的背景下运行(在这种情况下,用mplayer播放音乐文件),然后我想从不连续运行的单独程序来控制它。 所以如果我运行如下的东西: $ my_music_player pause song 我希望my_music_player脚本向后台进程发送一条消息,指示它将“p”写入mplayersubprocess的标准input,然后my_music_player脚本退出,但是mplayer和nodejs进程仍在后台运行,以便稍后取消暂停或调整音量等等。 我知道我可以使用nodejs child_process在后台进程和mplayer之间进行通信,我可以永远使用后台进程,但是我看不到任何更好的方法来与后台进程交谈,然后打开一个看起来像一吨不必要的开销..有没有人有更好的build议? 我没有结婚在这里使用nodejs。 我只需要一种方法来发送消息和从后台进程。

为什么在单个核心机器上启动我的应用程序时会出现多个node.js进程

情况 我实际上分析我的服务器和本地机器上的node.js应用程序的内存优化,发现一些令人困惑的东西。 如果我在本地运行我的应用程序(mac osx)并在系统活动监视器中看到一个进程 – 这就是我所期望的,因为没有使用例如集群启动的subprocess。 但是当我在舞台演出(AWS Ubuntu EC2 Micro Instance)上运行应用程序时,我通过htop看到有五个相关的进程运行我的应用程序,而不是预期的一个进程。 分析 每个进程使用完全相同的内存。 在我看了一下父母出现的过程之后,有一个父母有四个孩子。 我试图杀死一个导致完全崩溃(当没有pm2运行时)的subprocess,所以似乎每个进程都是必需的。 题 为什么操作系统和为什么节点显然需要在Ubuntu系统上有多个进程是有区别的。 感谢任何帮助理解它。

在使用process.exit() – 节点js时,Winston日志文件并不总是保存

我无法理解这个概念…在将日志文件保存到控制台和实际文件的程序上使用process.exit()时,日志事件全部打印在控制台中,但只有第一个(或者没有全部)保存到文件中。 这是一个问题的快速演示: 在下面的代码中,winstonlogging器是创build。 然后在numberScore函数中,为数组中的每个数字创build一个日志,最后我并行logging所有事件 – 只是一个演示! var async = require('async') var winston = require('winston') var moment = require('moment') var logger = new (winston.Logger)({ transports: [ new (winston.transports.Console)({ timestamp: function () { return moment().format('D/MM/YYYY HH:mm:ss:SSS') }, colorize: true }), new (require('winston-daily-rotate-file'))({ filename: 'logs/-system.log', datePattern: 'dd-MM-yyyy', prepend: true, json: false, timestamp: function () { return moment().format('D/MM/YYYY HH:mm:ss:SSS') […]

如何使用spawn在节点js中暂停进程

有什么办法,如何暂停节点js的过程? const { spawn } = require('child_process'); const process = spawn("run.cmd"); process.stdout.on('data', (data) => { console.log(`stdout: ${data}`); }); process.stderr.on('data', (data) => { console.log(`stderr: ${data}`); }); process.on('close', (code) => { }); 我想像这样调用somethink: process.pause() , process.continue() 。 或者使用cmd进行一些系统调用? 我正在使用Windows。 感谢您的任何帮助。

Node.JS使用Require()向CreateContext()添加访问节点模块

在我的应用程序中,我CreateContext,然后RunInContext。 我需要添加对上下文中的某些节点模块的访问。 我知道如何添加自己的Javascript方法,但是当我添加像async和http这样的节点模块时会出错。 我怎样才能做到这一点? 我正在使用沙箱模块https://github.com/gf3/sandbox来运行subprocess 码 var context = Script.createContext(); context.myOwnFunctions = function() { //my own javascript } context.myNodeFunctions = function() { //require('async') //require('http') /Add some function that use the items I required above } var run = Script.runInContext('code to run', context);

用Node.js启动\closures本地EXE应用程序

我有一个本地node.js应用程序在Windows中 – 是否有可能开始\杀死本地.EXE应用程序,并杀死它在我的代码。 可能吗? 如果是这样,我会很高兴看到一个例子。 谢谢。

分段错误(核心转储),通过产生的方式从NodeJS调用python脚本

我有python脚本通过统计R打印出长列表(通过PypeR)。 这个python脚本工作得很好。 现在我试图通过child_process的spawnfunction从NodeJS运行这个脚本,但是会失败,并显示以下错误: Traceback (most recent call last): File "pyper_sample.py", line 5, in <module> r=R() File "/home/mehtam/pyper.py", line 582, in __init__ 'prog' : Popen(RCMD, stdin=PIPE, stdout=PIPE, stderr=return_err and _STDOUT or childstderr, startupinfo=info), File "/usr/lib64/python2.6/subprocess.py", line 642, in __init__ errread, errwrite) File "/usr/lib64/python2.6/subprocess.py", line 1234, in _execute_child raise child_exception OSError: [Errno 2] No such file or […]