我试图使用管道和xargs来启动特定pid的顶部,但我无法让它工作,我不知道为什么:
ps aux|grep ProgramName|awk '{print $2}'|head -n1|xargs top -pid我得到正确的pid打印到屏幕,如果我停止后,头部-n1,并手动添加pid到命令top -pid XXX也工作,但运行整行作为一条命令,只是不返回顶部屏幕。
我在这里做错什么了?
编辑:是的,"-pid“确实是正确的(进一步检查远程外壳显示它实际上是基于Mac的系统,而不是Linux系统)
发布于 2013-04-30 19:36:44
我在这里做错什么了?
有几件事:
grep和awk。由于awk进行模式匹配,所以没有理由将grep作为一个单独的进程使用。awk和head。由于awk可以控制它打印的项的数量,所以不需要使用head。grep命令将同时找到指定的程序和grep程序。xargs提供单个命令行参数。无论是后退还是$()都是更好的选择。top采用的是-p交换机,而不是-pid交换机。(至少在我的电脑上。)把它们加起来,试着:
$ top -p $(ps aux | awk '/ProgramName/ && ! /awk/ { print $2; exit; }')发布于 2013-04-30 19:38:21
你的问题是
试试这个:
top -p "$(pgrep ProgramName | head -n 1)"或
top -p "$(pgrep --oldest ProgramName)"或
top -p "$(pgrep --newest ProgramName)"https://stackoverflow.com/questions/16307409
复制相似问题