利用NodeJS的子进程(child_process)调用系统命令的方法分享_json

NodeJS子进程简介 NodeJS子进程提供了与系统交互的重要接口,其主要API有: 标准输入、标准输出及标准错误输出的接口。

NodeJS子进程简介

NodeJS 子进程提供了与系统交互的重要接口,其主要 API 有:

标准输入、标准输出及标准错误输出的接口
child.stdin 获取标准输入
child.stdout 获取标准输出
child.stderr 获取标准错误输出
获取子进程的PID:child.pid
提供生成子进程的重要方法:child_process.spawn(cmd, args=[], [options])
提供直接执行系统命令的重要方法:child_process.exec(cmd, [options], callback)
提供杀死进程的方法:child.kill(signal='SIGTERM')

实例一:利用子进程获取系统内存使用情况

将以下代码保存为 free.js:

复制代码 代码如下:

var spawn = require('child_process').spawn,
free = spawn('free', ['-m']);

// 捕获标准输出并将其打印到控制台
free.stdout.on('data', function (data) {
console.log('标准输出:\n' + data);
});

// 捕获标准错误输出并将其打印到控制台
free.stderr.on('data', function (data) {
console.log('标准错误输出:\n' + data);
});

// 注册子进程关闭事件
free.on('exit', function (code, signal) {
console.log('子进程已退出,代码:' + code);
});

执行代码后的结果:

$ node free.js
标准输出:
total used free shared buffers cached
Mem: 3949 1974 1974 0 135 959
-/+ buffers/cache: 879 3070
Swap: 3905 0 3905

子进程已退出,代码:0
以上输出相当与在命令行执行:free -m 命令。

通过这个简单的例子我们已经对子进程的使用有所了解,下面再来一个示例,用于演示exec 的使用方法。

实例二:利用子进程统计系统登录次数

将下面代码保存为 last.js

复制代码 代码如下:

var exec = require('child_process').exec,
last = exec('last | wc -l');

last.stdout.on('data', function (data) {
console.log('标准输出:' + data);
});

last.on('exit', function (code) {
console.log('子进程已关闭,代码:' + code);
});

执行代码:

$ node last.js
标准输出:203

子进程已关闭,代码:0
其与直接在命令行输入:last | wc -l 的结果是一样的。

时间: 2024-11-13 08:13:24

利用NodeJS的子进程(child_process)调用系统命令的方法分享_json的相关文章

Node.js中安全调用系统命令的方法(避免注入安全漏洞)_node.js

在这篇文章中,我们将学习正确使用Node.js调用系统命令的方法,以避免常见的命令行注入漏洞. 我们经常使用的调用命令的方法是最简单的child_process.exec.它有很一个简单的使用模式;通过传入一段字符串命令,并把一个错误或命令处理结果回传至回调函数中. 这里是你通过child_process.exec调用系统命令一个非常典型的例子. 复制代码 代码如下: child_process.exec('ls', function (err, data) {     console.log(

puppet 利用 facter, 实现不同主机调用不同变量方法

 分析¶ 变量类型常见三种 1. 内建变量, 如 $title, $name 等, 针对类固定的格式而进行调用 2. 自定义变量, 如 myname = tttttt, 等, 但需要在每个类中进行独立定义, 不能够在类之间进行传递, 3. facter , 公共变量, 可以在每个类中共同使用, 当前打算使用 facter 作为变量的调用 测试1.¶ 修改 /etc/puppet/fileserver.conf 如下, 目的, 创建文件传输目录 grep -v "#" /etc/pu

Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例_node.js

每种语言都有自己的优势,互相结合起来各取所长程序执行起来效率更高或者说哪种实现方式较简单就用哪个,nodejs是利用子进程来调用系统命令或者文件,文档见http://nodejs.org/api/child_process.html,NodeJS子进程提供了与系统交互的重要接口,其主要API有: 标准输入.标准输出及标准错误输出的接口.   NodeJS 子进程提供了与系统交互的重要接口,其主要 API 有:   标准输入.标准输出及标准错误输出的接口 child.stdin 获取标准输入 ch

node js-node.js调用系统命令,输出结果中文会乱码

问题描述 node.js调用系统命令,输出结果中文会乱码 node.js的超级菜鸟一只-- 想在windows用child__process.exec()函数来执行一个系统命令,然后把结果在后台输出,但是中文会乱码-- 源代码: app.post('/', function (req, res, next){ child_process.exec('dir ' + req.params.name, function (err, data) { console.log(data); res.end

利用nodejs获取当前操作系统的数据参数

因为一开始的时候本篇文章直接从我博客上拿过来的没做修改,导致代码块字体显示白色,看不出来了就,发现后做了修改,现在可以正常查看了. 利用nodejs可以快速查看当前电脑的一些参数,具体的需要引入内置的os模块,至于具体的nodejs安装使用的话可以参考nodejs官网,当然本人也专门针对centos操作系统写了一篇日志,日过需要的话可以移步:centos下nodejs快速安装 var os=require('os'); 获取cpu(处理器架构) var arch=os.arch(); conso

ntpdate watchdog-应用程序调用系统命令ntpdate,导致看门狗重启

问题描述 应用程序调用系统命令ntpdate,导致看门狗重启 命令如下: ntpdate -p 1 ntp.sjtu.edu.cn 看门狗超时时间是1.5s,每次调用NTP同步,就会触发看门狗重启.求助!!

Java exec详解 - 调用系统命令以及进程

调用系统命令 执行系统命令相对来说比较容易,可以通过使用 Runtime 和 Process 两个类来执行.我们可以通过Process的getInputStream和getErrorStream两个方法获取到结果和错误信息的输入流,下面就是实例代码,改代码通过执行 ps -ef 命令来获取结果(执行在mac或者linux上) 1234567891011121314151617181920212223242526272829303132333435 package map; import java

winform-在C# Winform项目 利用WIN32 API 无法再次调用第三方的应用系统

问题描述 在C# Winform项目 利用WIN32 API 无法再次调用第三方的应用系统 在C# Winform项目,from窗体中有一个Panel控件和一个Button控件. 目前已经能够利用WIN32 API 找到"监控系统"窗口的句柄,并将那个获取到的窗口"附加"到了Panel控件上. 并能够正常在Panel控件中显示"监控系统". 请问下,怎么样实现form窗体关闭后,再次再点击Button控件能够再次获取到"监控系统&quo

实战教你如何利用NodeJS 漏洞?

本文讲的是实战教你如何利用NodeJS 漏洞?,先前看到NodeJS曾爆出一个很有趣的问题,想想好像大家都对NodeJS漏洞没什么利用经验,那么就让我来利用这一有趣的问题创建一个挑战吧. 挑战的源码可以从这里下载到,搭建也非常简单,只需要执行以下几步: $ cd nodejs_chall $ node -v v4.2.4 $ npm -v 2.14.12 $ npm install # 安装依赖 # 考虑国内npm速度较慢,推荐使用如下命令 # npm install --registry=ht