首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >管道& xargs =>顶部

管道& xargs =>顶部
EN

Stack Overflow用户
提问于 2013-04-30 19:20:13
回答 2查看 1.4K关注 0票数 2

我试图使用管道和xargs来启动特定pid的顶部,但我无法让它工作,我不知道为什么:

代码语言:javascript
复制
ps aux|grep ProgramName|awk '{print $2}'|head -n1|xargs top -pid

我得到正确的pid打印到屏幕,如果我停止后,头部-n1,并手动添加pid到命令top -pid XXX也工作,但运行整行作为一条命令,只是不返回顶部屏幕。

我在这里做错什么了?

编辑:是的,"-pid“确实是正确的(进一步检查远程外壳显示它实际上是基于Mac的系统,而不是Linux系统)

EN

回答 2

Stack Overflow用户

发布于 2013-04-30 19:36:44

我在这里做错什么了?

有几件事:

  1. 您在同一个管道中使用grepawk。由于awk进行模式匹配,所以没有理由将grep作为一个单独的进程使用。
  2. 您在同一个管道中使用awkhead。由于awk可以控制它打印的项的数量,所以不需要使用head
  3. grep命令将同时找到指定的程序和grep程序。
  4. 您正在使用xargs提供单个命令行参数。无论是后退还是$()都是更好的选择。
  5. top采用的是-p交换机,而不是-pid交换机。(至少在我的电脑上。)

把它们加起来,试着:

代码语言:javascript
复制
$ top -p $(ps aux | awk '/ProgramName/ && ! /awk/ { print $2; exit; }')
票数 3
EN

Stack Overflow用户

发布于 2013-04-30 19:38:21

你的问题是

  1. 顶部的艺术品应该是"-p“而不是"-pid”
  2. xargs用于运行非交互式程序。

试试这个:

代码语言:javascript
复制
top -p "$(pgrep ProgramName | head -n 1)"

代码语言:javascript
复制
top -p "$(pgrep --oldest ProgramName)"

代码语言:javascript
复制
top -p "$(pgrep --newest ProgramName)"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16307409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档