我正在尝试在nodejs中使用子进程在本地计算机上启动tomcat服务器。这是一个实验,将帮助我了解子进程的工作方式,并将有助于我正在进行的项目。我一直在看这里的文档:http://nodejs.org/api/child_process.html但我实际上有一个问题。
我想要做的是在本地某处运行nodejs,一旦我点击某处(甚至启动页面),该页面应该运行一个tomcat服务器,确保它已启动然后加载localhost:8080欢迎页面。一旦我在这里关闭了这个页面,就会调用nodejs API,它应该关闭tomcat(这部分现在不是必需的,只是实验的一部分)。谢谢!
答案 0 :(得分:2)
看看这个npm模块Shelljs
ShellJS - 用于Node.js构建状态的Unix shell命令
ShellJS是Unix的可移植(Windows / Linux / OS X)实现 在Node.js API之上的shell命令。你可以用它来消除 你的shell脚本依赖于Unix,同时仍保留它 熟悉而强大的命令。您也可以全局安装它 你可以从Node项目外部运行它 - 告别那些 gnarly Bash脚本!
已在许多相关项目中测试过ShellJS
由于它能够调用脚本,因此您可以控制Tomcat的脚本以启动和关闭,并继续进行实验:)
ShellJS可以选择:
exec(命令[,选项] [,回调])
可用选项(默认情况下均为false):
async: Asynchronous execution. Defaults to true if a callback is provided. silent: Do not echo program output to console.
示例:
var version = exec('node --version',{silent:true})。output;
var child = exec('some_long_running_process',{async:true}); child.stdout.on('data',function(data){/ * ...做点什么 数据... * /});
exec('some_long_running_process',函数(代码,输出){
console.log('退出代码:',代码); console.log('程序输出:', 输出); });同步执行给定命令,除非另有说明。 在同步模式下返回对象{code:...,output:...}, 包含程序的输出(stdout + stderr)及其退出代码。 否则返回子进程对象,回调得到 参数(代码,输出)。
注意:对于长期存在的进程,最好以异步方式运行exec() 因为当前的同步实现使用了大量的CPU。这个 应尽快修复。