Node.jsメモ(9)Nodejsとshell
ご存知のように、Nodejsは単一プロセスで非同期的に実行されていますが、単一プロセスだけではなく、Nodejsも多プロセス面でのサポートを提供しています.その創始者はやはりこのブロックを重視するべきです.最も有力な証拠はchild_です.processはNodejsコアモジュールの一つです.
ほとんどの場合このモジュールは使えないはずですが、child_processは面白いことがたくさんできます.
shell呼び出し
最近使った比較的に実用的な機能は、大きなデータ処理をする時、顧客のページ上のクリックによってsparkクラスタに変換する必要があるコマンドsparkはscalaで書いたもので、Nodejsとは少しの関係も考慮していないので、shellで解決することにしました.
shellスクリプト基礎shellは簡単です.コンソールでcd desktopを負けて車に戻ります.これは一番簡単なshell命令です.このコマンドをテキストに書いてください.shellスクリプトです.例えば、test.shです.
Nodejsのexecfile方法の原型は以下の通りです. timeout stdout stder shellの方式でこのようなクロス言語呼出しを実現するのは、通常不安定であると考えられています.linuxのexec命令が実行されると、既存のプロセスは新しいプロセスに置き換えられ、さらに新しいプロセスに対するコントロールが初めて失われます.また、shellエラーがあります.様々な原因でカードが死ぬなど、Nodejsはより良い解決策を提供しています.タイムアウトはカード死の問題を解決しました.stdoutとstderは標準出力とエラー出力を提供しました.サブプロセスの状態が取得できるように、具体的な使い方は以下の通りです.
ほとんどの場合このモジュールは使えないはずですが、child_processは面白いことがたくさんできます.
shell呼び出し
最近使った比較的に実用的な機能は、大きなデータ処理をする時、顧客のページ上のクリックによってsparkクラスタに変換する必要があるコマンドsparkはscalaで書いたもので、Nodejsとは少しの関係も考慮していないので、shellで解決することにしました.
shellスクリプト基礎shellは簡単です.コンソールで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
使うのも簡単です.注意すべき点は三つあります.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);
}
});
}