Node.js笔记(九)Nodejs与shell
众所周知。Nodejs是单进程异步执行的。但不光是单进程,Nodejs也提供了多进程方面的支持
其创始人应该还是比較重视这一块的,最有力的证据就是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安装
Windows平台下的node.js安装 直接去nodejs的官网http://nodejs.org/上下载nodejs安装程序,双击安装就可以了 测试安装是否成功: 在命令行输入 node –v 应 ...
- Node.js 笔记(一) nodejs、npm、express安装(转)
转载地址:http://blog.csdn.net/haidaochen/article/details/7257655 Windows平台下的node.js安装 直接去nodejs的官网http:/ ...
- node.js 笔记
教程总结笔记: 学习网站:http://www.runoob.com/nodejs/nodejs-install-setup.html Node.js 中文网及安装文件下载: http://nodej ...
- Node.js 笔记01
一.Node.js 前言 1.node.js 之父 Ryan Dahl(瑞安达尔) ,技术好,颜值高! 数学系博士, 中途退学, 为了生活, 学习了Ruby On Rails接Web项目, 经过两年成 ...
- node.js 笔记(一)
参考:https://github.com/alsotang/node-lessons 感谢!!! 本文属于小白入门级笔记,请大牛自动屏蔽!!! 1. 开发环境 os: 10.12.6 nod ...
- node.js笔记
在node环境上面运行js代码,js相当于php,node相当于apache环境 第一步装 node 环境1.从官网下载 dmg 文件安装2.通过命令行安装 需要用到 homebrew(mac上专门用 ...
- Node.js笔记3
###Node.js核心模块 1. 全局对象 Node.js中能够访问到的都是global的属性 **process它用于描述当前 Node.js 进程状态的对象,提供了一个与操作系统的简单接口.** ...
- Node.js笔记1
Node.js入门笔记 1. node -help 可以显示帮助信息2. node REPL 模式(Read-eval-print loop) 输入—求值—输出循环 直接在cmd输入node 可以进入 ...
- node.js 笔记一
现在地址:http://nodejs.org/download/ 我的机器是windows的,选择的文件是,是编译后的版本:Windows Installer (.msi) 32-bit examp ...
- Node.js 笔记02
一.关于命令 常用命令: dir 列出当前目录下面所有的文件 cd 目录名 进入到指定的目录,. 当前目录, .. 进入上级目录,cd . 当前目录, cd .. 上级目录 md 目录名 创建文件夹 ...
随机推荐
- RandomStringUtils生成随机数
org.apache.commons.lang.RandomStringUtils; //产生5位长度的随机字符串,中文环 ...
- Shiro架构及其组件
Shiro可以帮助我们完成:认证.授权.加密.会话管理.与Web集成.缓存等.这不就是我们想要的嘛,而且Shiro的API也是非常简单:其基本功能点如下图所示: Authentication:身份认证 ...
- 《读书报告 – Elasticsearch入门 》----Part II 深入搜索(1)
Part II 深入搜索 搜索不仅仅是全文本搜索:数据的很大部分是结构化的值例如日期.数字.这部分开始解释怎样以一种高效地方式结合结构化搜索和全文本搜索. 第十二章 结构化搜索 结构化搜索_ 是指查询 ...
- 关于【搭建LAMP环境时,php测试页面打不开】解决
关于[搭建LAMP环境时,php测试页面打不开]解决 〇.我的测试页面是: http://172.30.124.10/index.php 用火狐打不开,如下图. 一.httpd已经启动了(system ...
- 洛谷 P1877 [HAOI2012]音量调节
P1877 [HAOI2012]音量调节 题目描述 一个吉他手准备参加一场演出.他不喜欢在演出时始终使用同一个音量,所以他决定每一首歌之前他都需要改变一次音量.在演出开始之前,他已经做好一个列表,里面 ...
- Android底层驱动开发(一)
1 Android为什么要增加硬件抽象层HAL A 统一硬件调用接口.所以利用HAL屏蔽linux驱动的复杂不统一的接口 B 解决GPL版权问题,因为linux内核基于GPL协议.这个G ...
- msp430在ccsv5下出现的问题总结
一.内存问题 问题描写叙述,报错: program will not fit into available memory. placement with alignment fails for se ...
- JAVA基础实例(二)
1.做一个饲养员给动物喂食物的样例体现JAVA中的面向对象思想,接口(抽象类)的用处 package com.softeem.demo; /** *@authorleno *动物的接口 */ inte ...
- php 内置的 html 格式化/美化tidy函数 -- 让你的HTML更美观
php 内置的 html 格式化/美化tidy函数 https://github.com/htacg/tidy-html5 # HTML 格式化 function beautify_html($htm ...
- android framework 01
.(由下向上启动),Uboot引导内核(linux Kernel)启动,把内核从flash放到内存中,引导内核启动.内核是系统的核心,负责进程的管理内存的管理网络的管理.内核(Linux Kenel) ...