【发布时间】:2021-06-26 00:44:42
【问题描述】:
我有一堆需要检查 CPU 亲和性的进程,所以我得到了这个:
for i in `ps -Fae | grep proc_name| awk '{print $2}'`; do taskset -acp $i;done
但是我有一个问题,taskset 也显示了所有子进程的 pid,所以我得到了大量的数字以及它们的 cpu 亲和力。
我想将上面的行输入egrep 'pid1|pid2',这样我就可以过滤掉所有的子进程。
我试过这个:
for i in `ps -Fae | grep proc_name| awk '{print $2}'`; do taskset -acp $i;done | xargs egrep 'ps -Fae | grep proc_name| awk '{print $2}''
但我的 ksh shell 根本不喜欢 awk 括号。
所以我有两个问题:
- 可以将任务集更改为仅显示父 pid 吗?
- 我如何写最后一位我只 egrep 父 pid?
【问题讨论】:
-
请编辑您的 Q 以显示您正在使用的操作系统。添加来自
uname -srv的输出。祝你好运。 -
您的问题准确地说明了为什么您不应再使用
`。使用$( )在“内部”命令中运行命令。它将清除您的一些引用问题。 -
@Nic3500 我不确定所有(或任何?)ksh 版本都支持
$( )。