Node.js笔记(九)Nodejs与shell
2017-06-09 11:10
225 查看
众所周知。Nodejs是单进程异步执行的。但不光是单进程,Nodejs也提供了多进程方面的支持
其创始人应该还是比較重视这一块的,最有力的证据就是child_process是Nodejs核心模块之中的一个
大多数情况下应该用不到这个模块,但child_process却能做非常多有意思的事情
shell调用
近期用到的比較有用的功能。在做大数据处理的时候。须要依据客户在页面上的点击转化为spark集群的命令
spark是用scala写的,跟Nodejs半点关系都没有
考虑了一段时间后,决定用shell来解决
shell脚本基础
shell事实上非常easy,你在控制台输个cd desktop然后回车,这就是最简单的shell指令,
把这行指令写在文本里。就是shell脚本了
比如:
test.sh
在*nix系统下能够使用命令
来执行这个脚本,效果跟直接敲命令
是一样的
Nodejs的execfile方法
原型例如以下:
使用也非常easy,值得注意的有三点
timeout
stdout
stderr
用shell的方式来实现这样的跨语言调用通常被觉得是不稳定的,
linux的exec命令执行后。原有进程会被替换成新的进程。进而失去对新进程的控制
初次之外。还有shell出错。由于各种原因卡死等情况
Nodejs提供了比較好的解决方式。timeout攻克了卡死的问题
stdout和stderr则提供了标准输出和错误输出,使得子进程的状态能够被获取
详细用法例如以下:
其创始人应该还是比較重视这一块的,最有力的证据就是child_process是Nodejs核心模块之中的一个
大多数情况下应该用不到这个模块,但child_process却能做非常多有意思的事情
shell调用
近期用到的比較有用的功能。在做大数据处理的时候。须要依据客户在页面上的点击转化为spark集群的命令
spark是用scala写的,跟Nodejs半点关系都没有
考虑了一段时间后,决定用shell来解决
shell脚本基础
shell事实上非常easy,你在控制台输个cd desktop然后回车,这就是最简单的shell指令,
把这行指令写在文本里。就是shell脚本了
比如:
test.sh
#!bin/bash spark-submit test.jar para1 para2......
在*nix系统下能够使用命令
sh test.sh
来执行这个脚本,效果跟直接敲命令
spark-submit test.jar para1 para2......
是一样的
Nodejs的execfile方法
原型例如以下:
child_process.execFile(file, args, options, callback) 说明: file {String} 要执行的程序的文件名称 args {Array} 字符串參数列表 options {Object} cwd {String} 子进程的当前工作文件夹 env {Object} 环境变量键值对 encoding {String} 编码(缺省为 'utf8') timeout {Number} 超时(缺省为 0) maxBuffer {Number} 最大缓冲(缺省为 200*1024) killSignal {String} 结束信号(缺省为 'SIGTERM') callback {Function} 进程结束时回调并带上输出 error {Error} stdout {Buffer} stderr {Buffer} 返回:ChildProcess 对象
使用也非常easy,值得注意的有三点
timeout
stdout
stderr
用shell的方式来实现这样的跨语言调用通常被觉得是不稳定的,
linux的exec命令执行后。原有进程会被替换成新的进程。进而失去对新进程的控制
初次之外。还有shell出错。由于各种原因卡死等情况
Nodejs提供了比較好的解决方式。timeout攻克了卡死的问题
stdout和stderr则提供了标准输出和错误输出,使得子进程的状态能够被获取
详细用法例如以下:
var call_sh = require('child_process'); //para是json格式的数组。由post得到 function callsh(file,para){ call_sh.execFile(file,[para.attr1,para.attr2],function (error, stdout, stderr) { console.log('stdout: ' + stdout); console.log('stderr: ' + stderr); if (error !== null) { console.log('exec error: ' + error); } }); }
相关文章推荐
- Node.js笔记(九)Nodejs与shell
- [转载] Node.js 笔记(一) nodejs、npm、express安装
- Node.js笔记(十)Nodejs与DOM操作
- Node.js 笔记(一) nodejs、npm、express安装
- Node.js 笔记(一) nodejs、npm、express安装
- NodeJS学习笔记--NodeJS+Express基础概念梳理记录
- Node.js 笔记(一) nodejs、npm、express安装(转)
- Node.js 笔记(一) nodejs、npm、express安装
- NodeJS学习系列课程笔记(NodeJs Stream 的相关使用方法)
- Node.js 笔记(一) nodejs、npm、express安装
- NodeJS学习系列课程笔记(NodeJS util工具类相关使用方法)
- Node.js 笔记(一) nodejs、npm、express安装
- 【node.js学习笔记】第一章 初识nodejs
- NodeJS学习系列课程笔记(NodeJs EventEmitter相关使用方法)
- Node.js 笔记(一) nodejs、npm、express安装
- NodeJS笔记 一个完整的基于Node.js的web应用
- Node.js 笔记(一) nodejs、npm、express安装
- Node.js 笔记(一) nodejs、npm、express安装
- NodeJS-学习笔记(1)--windows7下node.js环境的搭建
- node.js 学习笔记四:读取文件