获取进程相关的基本信息

#!/bin/env node
console.log (process.execPath)
console.log (process.cwd())
console.log (process.pid)
let user = process.env.USER || ""
console.log (user) process.on('exit', function () {
  console.log('Bye.');
}); process.on('uncaughtException', function (err) {
  console.log('Caught exception: ' + err);
});

启动进程的各种方法的比较

  • child_process.spawn() 方法会异步地衍生子进程,且不阻塞 Node.js 事件循环。 child_process.spawnSync() 函数则以同步的方式提供了等效的功能,但会阻塞事件循环直到衍生的进程退出或被终止。
  • child_process.exec(): 衍生 shell 并且在 shell 中运行命令,当完成时则将 stdout 和 stderr 传给回调函数。
  • child_process.execFile(): 类似于 child_process.exec(),但是默认情况下它会直接衍生命令而不先衍生 shell,由于没有衍生 shell,因此不支持 I/O 重定向和文件通配等行为。
  • child_process.fork(): 衍生新的 Node.js 进程,并调用指定的模块,该模块已建立了 IPC 通信通道,可以在父进程与子进程之间发送消息。
  • child_process.execSync(): child_process.exec() 的同步版本,会阻塞 Node.js 事件循环。
  • child_process.execFileSync(): child_process.execFile() 的同步版本,会阻塞 Node.js 事件循环。

以非常精细的方式运行 ps ax | grep ssh

const { spawn } = require('child_process');
const ps = spawn('ps', ['ax']);
const grep = spawn('grep', ['ssh']); ps.stdout.on('data', (data) => {
grep.stdin.write(data);
}); ps.stderr.on('data', (data) => {
console.error(`ps 的 stderr: ${data}`);
}); ps.on('close', (code) => {
if (code !== 0) {
console.log(`ps 进程退出,退出码 ${code}`);
}
grep.stdin.end();
}); grep.stdout.on('data', (data) => {
console.log(data.toString());
}); grep.stderr.on('data', (data) => {
console.error(`grep 的 stderr: ${data}`);
}); grep.on('close', (code) => {
if (code !== 0) {
console.log(`grep 进程退出,退出码 ${code}`);
}
}); //-------------------------------------
const { spawn } = require('child_process');
const grep = spawn('grep', ['ssh']); grep.on('close', (code, signal) => {
console.log(`子进程因收到信号 ${signal} 而终止`);
}); // 发送 SIGHUP 到进程。
grep.kill('SIGHUP');

nodejs新进程子进程的更多相关文章

  1. linux内核分析作业6:分析Linux内核创建一个新进程的过程

    task_struct结构: struct task_struct {   volatile long state;进程状态  void *stack; 堆栈  pid_t pid; 进程标识符  u ...

  2. Linux启动新进程的几种方法汇总

    有时候,我们需要在自己的程序(进程)中启动另一个程序(进程)来帮助我们完成一些工作,那么我们需要怎么才能在自己的进程中启动其他的进程呢?在Linux中提供了不少的方法来实现这一点,下面就来介绍一个这些 ...

  3. Linux内核创建一个新进程

    张雨梅   原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-10000 创建新进程 如果同一个程序被多 ...

  4. fork函数创建新进程过程分析

    gdb调试执行流程,首先设置断点b sys_clone,当在shell下输入fork命令后,系统执行至断点,接下来按步执行: 判断是否被跟踪 判断是否被创建为轻量级进程(vfork) 判断父进程是否被 ...

  5. 第六周——分析Linux内核创建一个新进程的过程

    "万子恵 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 &q ...

  6. 分析Linux内核创建一个新进程的过程

    一.原理分析 1.进程的描述 进程控制块PCB——task_struct,为了管理进程,内核必须对每个进程进行清晰的描述,进程描述符提供了内核所需了解的进程信息. struct task_struct ...

  7. Linux内核创建一个新进程的过程

    “平安的祝福 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” 进程在 ...

  8. 分析Linux内核创建一个新进程的过程【转】

    转自:http://www.cnblogs.com/MarkWoo/p/4420588.html 前言说明 本篇为网易云课堂Linux内核分析课程的第六周作业,本次作业我们将具体来分析fork系统调用 ...

  9. [转载] 分析Linux内核创建一个新进程的过程

    http://blog.luoyuanhang.com/2015/07/27/%E5%88%86%E6%9E%90Linux%E5%86%85%E6%A0%B8%E5%88%9B%E5%BB%BA%E ...

  10. Linux启动新进程的三种方法

    程序中,我们有时需要启动一个新的进程,来完成其他的工作.下面介绍了三种实现方法,以及这三种方法之间的区别. 1.system函数-调用shell进程,开启新进程system函数,是通过启动shell进 ...

随机推荐

  1. 容器、容器云和容器化PaaS平台之间到底是什么关系?

    本文分享自天翼云开发者社区<容器.容器云和容器化PaaS平台之间到底是什么关系?>,作者:s****n 一直都有很多人迷惑于容器应该属于 IaaS 或是 PaaS 层,也搞不清楚容器云到底 ...

  2. 离散最大似然法与 OI

    若总体属于离散型,其分布律在参数 \(\theta\) 作用下 \(P\{X=x\}=p(x;\theta),\Theta=\{\theta\}\) 的形式已知,设 \(X_1,X_2,\dots,x ...

  3. 如何配置支付宝密钥之如何配置普通 RSA2 密钥|保姆级教学(一)

    进行支付宝开发的第一步就是:配置密钥. 但是有很多小伙伴都不知道怎么配置,这篇文章将手把手帮你从头开始捋清如何配置支付宝密钥- 这次首先放一下官方文档:[如何生成及配置 RSA2 密钥],大佬们也可以 ...

  4. tomcat启动时启动窗口出现乱码的解决方案

    工具/原料   一台安装了tomcat的电脑 方法/步骤     先来看看问题(图示),在tomcat的启动窗口打印的启动信息中包含了大量的中文乱码,虽然这些对tomcat本身的使用没有任何影响,但却 ...

  5. autMan奥特曼机器人-wxbot邀请入群插件的使用

    内置微信(非微信框架)的拉群插件怎么用? 一.安装"wxbot邀请入群"插件 二.在"我的"->"wxbot邀请入群"->配参中 ...

  6. 刷入Magisk错误:1教程

    面具是目前使用最多的授权APP了,兼容主流安卓版本,基本上已彻底的替代的之前的supersu授权,面具magisk不仅支持给APP进行授权ROOT,还支持隐藏root功能magiskhide,使得手机 ...

  7. ETL工程师

    Python Flume DataX HDFS 数仓建模分层:ODS.DIM.DWD.DWS.APS Kettle.Informatica SQL(Oracle.MySQL)

  8. sql server 2017 STRING_AGG() 替代方案

    SELECT @StuId='"'+STRING_AGG(Id,'","')+'"'FROM( SELECT 'a'+cast(Id as varchar) I ...

  9. 【由技及道】量子构建交响曲:Jenkinsfile流水线的十一维编程艺术【人工智障AI2077的开发日志008】

    摘要:当代码提交触发时空涟漪,当构建流水线穿越量子维度--欢迎来到自动化构建的终极形态.本文将揭示如何用Jenkinsfile编写量子构建乐章,让每次代码提交都成为跨维度交响乐的音符. 动机:构建系统 ...

  10. sap 管理--企业解决方案 -设备管理

    1.什么是sap 管理 2.设备管理管的是什么 3.设备的几种状态 4.设备bom(物料清单) 5.测量点计数器 1.什么是sap 管理 System Applications and Product ...