ps au | 的结果grep ssh 在 Node.js(使用spawn/pipe)与 shell 中的不同

2024-01-14

我正在研究节点流和子进程。所以我想用管道模拟下一个 shell 命令:

ps au | grep ssh

所以我写了下一个代码:

var spawn = require('child_process').spawn;
var ps    = spawn('ps',   ['au']);
var grep  = spawn('grep', ['ssh']);

ps.stdout.pipe(grep.stdin);

grep.stdout.on('data', function(data) { console.log(data) });

然后我运行它,但没有任何反应。我做错了什么?

附: - 我知道:

require('child_process')
   .exec('ps au | grep ssh', function(err, stdout, stderr) { 
       ... 
   }). 

我只是在玩 Node.js,我想了解这个示例有什么问题。

更新1:
看来用 grepbash程序按预期工作,但使用 grepssh没有结果。虽然ps au | grep ssh给了我这个结果:

vagrant 11681 0.0 0.1 10464 916 pts/0 S+ 07:54 0:00 grep --color=auto ssh.

你打电话时ps它将列出与传递的选项匹配的所有当前正在运行的进程。哪个可能会寻找ps au像这样的东西:

tniese  3251   0,0  0,0  2479028   3004 s000  S+    4:06am   0:00.03 -bash
root    4453   0,0  0,0  2452408    876 s004  R+    4:06pm   0:00.00 ps au

你打电话时ps au | grep ssh在壳里grep将过滤该结果以仅显示包含以下内容的行ssh.

If the grep之前由 shell 启动ps创建其列表,然后过滤前的输出将是:

tniese  3251   0,0  0,0  2479028   3004 s000  S+    4:06am   0:00.03 -bash
root    4453   0,0  0,0  2452408    876 s004  R+    4:06pm   0:00.00 ps au
tniese  4478   0,0  0,0  2441988    596 s000  R+    4:06pm   0:00.00 grep ssh

The grep进程将匹配其自己的条目,因为它包含传递的参数,因此过滤结果将是:

tniese  4478   0,0  0,0  2441988    596 s000  R+    4:06pm   0:00.00 grep ssh

让我们看看您的代码发生了什么:

var spawn = require('child_process').spawn;
var ps    = spawn('ps',   ['au']);
var grep  = spawn('grep', ['ssh']);

ps.stdout.pipe(grep.stdin);

通过spawn,您可以告诉操作系统启动该进程ps, ps不需要等到输出可以通过管道传输到任何地方才运行,但可以在此之前启动,它可能只在尝试写入其输出流时被迫等待。然后你的产卵grep,但当时grep已推出ps可能已经在内部创建了进程列表,原因是它不包含grep过程。的输出ps然后传递给 grep。但由于缺少此输出grep ssh它不会显示那条线。

Wether grep是否出现在您的列表中很大程度上取决于操作系统。一般来说,无论是否列出,您都应该假设它是随机的。或者你需要等到ps退出并启动grep在那之后。

您需要始终记住,当前操作系统具有抢占式多任务处理,并且调度程序可能会在之后立即暂停节点spawn('ps', ['au']);并立即继续该过程ps创建/请求列表。

我希望这个解释比我的评论更清楚一些。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ps au | 的结果grep ssh 在 Node.js(使用spawn/pipe)与 shell 中的不同 的相关文章

  • 如何在 JS Rails 响应中包含 HTML?

    我有一个响应 HTML 和 JS AJAX 查询的 FooController app controllers foo controller rb class FooController lt ApplicationController l
  • 根据用户区域设置过滤字符串列表

    当使用 AngularJS 1 6 处理 JavaScript 项目时 我有一个要过滤的字符串列表 例如 假设我的列表包含 rbol cig e a nido and tubo 当过滤西班牙语字符串时 如果我过滤 u 我会期望两者cig e
  • Mongodb更新很多

    我正在使用express js 和 npm 模块 mongodb 进行开发 并以 mongodb 作为数据库 我有两个集合 即 用户 和 活动 一个用户可能有数千个活动 首先 我将用户的 id 姓名和图片 url 存储到 关系的活动文件 请
  • 使用JQuery检查元素是否有边框?

    所以我正在玩 el css 尝试确定元素是否有边框 我用 css border style solid 设置边框 这是可行的 但实际上它设置了 4 种单独的样式 border right style border left style bo
  • 默认情况下嵌入带字幕的 Youtube 不起作用

    我正在尝试嵌入 Youtube 电影 并希望默认情况下打开字幕 From https developers google com youtube player parameters cc load policy https develope
  • mouseover 和 mouseout 事件在子进程上触发

    代码 div div div div 如果我将鼠标悬停在Navigation the Drop Downdiv 向下滑动 如果我将鼠标移开 它会向上滑动 问题是如果我将鼠标悬停在孩子上Drop Downdiv它也向上滑 动 有谁知道我该如何
  • 有人在node/socket.io 中成功实现了动态命名空间吗?

    含义 用户对应用程序进行身份验证 gt 应用程序设置socket io连接的命名空间 http www socketioserver com NAMESPACE 并且节点服务器相应地响应无需针对特定名称空间进行硬编码 到那个特定的命名空间
  • express 或express-generator:我需要两者吗?

    只是探索 Node js 并遇到了 Express 在 npm 存储库站点上https www npmjs com package express https www npmjs com package express它明确指出安装是 np
  • Angular 2 runOutsideAngular 仍然改变 UI

    从我的理解来看runOutsideAngular https angular io docs ts latest api core index NgZone class html runOutsideAngular anchor 如果我需要
  • Sequelize.js - “不关联到”

    我在从数据库获取完整数据时遇到一些问题 那是我的模型 User module exports function sequelize DataTypes return sequelize define user id type DataTyp
  • 有没有好的 JQuery twitter 小部件可以循环推文?

    我想知道是否有任何 JQuery 小部件提供了循环加载推文的功能 例如在官方小部件中http twitter com about resources widgets widget profile http twitter com about
  • 监听浏览器宽度以进行响应式网页设计?

    我正在努力使我的网站适合移动设备 我想知道浏览器窗口的大小 以便当它比 728px 窄时我可以执行某些操作 而当它大于 728px 时我可以执行其他操作 这必须考虑到调整 PC 上的窗口大小以及在手机中从纵向模式更改为横向模式 如何才能做到
  • 如何查看网站浏览者的操作系统?

    我运行的是 Ubuntu 8 04 最近在访问网站时收到以下错误 请使用运行 Windows 98 2000 Me NT 或 XP 的计算机返回 www site com 网站如何知道我正在运行哪个操作系统 是仅通过 javascript
  • ExpressJS - DELETE 请求后 res.redirect

    我一直在寻找如何执行此操作 我正在尝试在发出删除请求后重定向 这是我正在使用的代码没有重定向 exports remove function req res var postId req params id Post remove id p
  • 为什么从浏览器上传到 S3 时出现 403 错误?

    因此 我尝试查看此处之前的答案 但似乎没有任何效果 我正在使用 Dropzone 它似乎发出 OPTIONS 请求来获取所有允许的 CORS 相关信息 但它似乎没有正确返回 因此 通过查看 Chrome 开发工具 我有以下请求标头 Host
  • 如何按字母顺序排序并先小写排序

    如何获得以下排序的结果Food to Eat然后是 食物123 显然 第二个较低的 o 应该将 要吃的食物 带到排序后的第一个项目中 我很惊讶这个问题不容易通过谷歌找到答案 这个壮举没有包含在 javascript 标准中也让我感到惊讶 F
  • 将 div 文本分配给变量然后显示它

    我有一个简单的任务 我试图完成学习 JavaScript 但一直无法找到明确的答案 这是代码 div Testing div 基本上我希望将方框 div 中的文本存储到变量中 然后 我想在页面的不同部分显示该变量的文本 使用上面的代码我得到
  • 如何使用引用该键的变量来获取对象键中的值?

    我有一个对象 我可以引用密钥a如下 var obj a A b B c C console log obj a return string A 我想通过使用变量引用对象键来获取值 如下所示 var name a console log ob
  • WooCommerce 使用 AJAX 设置购物车数量?

    我已经为此绞尽脑汁好几天了 需要一些指导 我正在为 WooCommerce 网站完全从头开始制作自定义主题 现在我正在尝试让购物车功能正常工作 我一直试图使用按钮 来更新购物车中产品的数量 对我来说问题似乎是WC 我在functions p
  • 利用重力效果拖动元素

    我想完成类似于 photoshop com 和此网站的功能 http mrdoob com projects chromeexperiments google gravity http mrdoob com projects chromee

随机推荐

  • 如何在Python中正确应用赋值运算符?

    我必须对一个大数组进行一些数学运算 例如加法 乘法 为了防止任何 MemoryError 我正在按照此答案的建议进行计算thread https stackoverflow com questions 4318615 python nump
  • 从常规数组中创建一个具有相同键和值的关联数组

    我有一个看起来像的数组 numbers array first second third 我想要一个函数 它将将此数组作为输入并返回一个如下所示的数组 array first gt first second gt second third
  • 如何在C中动态分配字符串数组?

    我是菜鸟所以别太难了 而不是这样的东西 char string NUM OF STRINGS NUM OF LETTERS 是否可以使用 malloc 动态分配数组中的字符串数量 就像为 char 指针动态分配内存一样 像这样的事情 int
  • ThreadPoolExecutor - 在队列之前使用线程

    我正在用 java 给定的 ThreadPoolExecutor 替换旧线程池 在传统线程池中 启动时会创建 60000 个线程 但在 ThreadPoolExecutor 中 使用核心线程 最大线程和 prestartAllCoreThr
  • FabricJS:始终在画布上居中对象

    是否可以始终将对象置于 Fabricjs 画布的中心 背景 我正在构建一个网络工具 可以使用 Fabricjs 轻松创建复杂的动画 我希望能够将画布大小的宽度和高度设置为 100 因此 我想将所有对象放置在中心并为其添加 X Y 偏移 当我
  • 通过关系获取相关数据

    我正在使用 laravel 5 5 13 I have App Entity其中有很多App Comment的和许多App Thumb s 现在我可以像这样轻松获取评论和拇指 public function show Entity enti
  • Rails - 如何基于布尔字段进行搜索? (MySQL 错误)

    我正在运行以下查询 projects company projects where active true order created at ASC 我收到错误 ActiveRecord StatementInvalid Mysql Par
  • 使用数据注释进行 MVC 验证 - 模型类还是视图模型类?

    将数据验证注释放在模型或视图模型中是最佳实践吗 一种方法相对于另一种方法的优点 缺点是什么 我很想知道每个人都在哪里进行验证 我目前正在模型项目中进行验证 然而我看到一些人说这不是最佳实践 就最佳实践而言 我想说 两者都不是 验证应该是分开
  • 通过 Group By Pandas 创建两个聚合列

    我是 DataFrames 的新手 我想对多列进行分组 然后对最后一列进行求和并计数 例如 s pd DataFrame np matrix 1 2 3 4 3 4 7 6 3 4 5 6 1 2 3 7 columns a b c d a
  • Jenkins 是否自动创建上游/下游?

    我正在使用詹金斯进行持续集成 我创建了单独的视图 例如服务器 A 的视图 A 服务器 B 的视图 B 等 每个视图都根据服务器的环境属性构建我的项目 但我可以看到 即使没有明确创建 也会创建不相关的上游和下游 有什么解决办法吗 在 Jenk
  • 通过Data类发送类对象

    安卓最近推出了工作经理 https developer android com reference androidx work WorkManager用于调度任务 该功能的强大功能之一工作经理 https developer android
  • 如何使用 oauth2 安全性在资源服务器中配置资源 id

    我正在尝试创建授权服务器和资源服务器 当尝试从授权服务器获取访问令牌时 其工作并获取具有以下详细信息的访问令牌 access token 5ffbc2d7 2a27 4f08 921f f7de2410b5f5 token type bea
  • Gremlin Python createIndex (Tinkerpop)

    我目前正在使用 Tinkerpop 与gremlin python 客户端 https pypi python org pypi gremlinpython 3 2 4使用默认的TinkerGraph Gremlin https tinke
  • Python 字符串匹配

    如果一个字符串包含 SUBJECT123 如何确定字符串有subject在Python中 if subject in mystring lower do something
  • Redis 键中冒号的用途是什么

    我正在学习如何在我的项目中使用 Redis 我不明白的一件事是键名称中冒号的确切用途 我见过这样的键名 users bob color blue item bag 冒号是否可以将键分类并加快查找键的速度 如果是这样 您可以在命名键时使用多个
  • 仅使用 CSS 使相邻同级元素具有相同的宽度

    我提前表示抱歉 因为出于保密原因 我无法显示我正在处理的代码 图像 但我认为我可以很简单地解释它 我有一个 h1 充当我的网页标题的元素 该标题可以根据用户所在的特定页面的标题更改长度 因此它可以说 主页 也可以说 已保存的项目 等 长度各
  • 特定版本的 HTC DESIRE HD 中 SQLite 中缺少表

    我的应用程序在 asset 文件夹中有一个 SQLite 数据库 当用户启动我的应用程序时 将创建数据库和表 这适用于许多设备 Nexus One Htc Magic SGS X10 甚至 Htc Desire HD v2 2 我的应用程序
  • 大 O 时间复杂度中的指数分母(分数指数)从何而来?

    In algorithm descirptions I sometimes encounter time complexities that look like O n29 20 m7 3 I see where and numerator
  • 为什么 stanford corenlp 性别识别是不确定的?

    我有以下结果 正如您所看到的 名字 edward 有不同的结果 空和男性 好几个名字都发生过这种情况 edward Gender null james Gender MALE karla Gender null edward Gender
  • ps au | 的结果grep ssh 在 Node.js(使用spawn/pipe)与 shell 中的不同

    我正在研究节点流和子进程 所以我想用管道模拟下一个 shell 命令 ps au grep ssh 所以我写了下一个代码 var spawn require child process spawn var ps spawn ps au va