如何使用 awk 和命令来通过“ps”命令显示进程 ID

如何使用 awk 和命令来通过“ps”命令显示进程 ID

我可以使用PID以下命令显示(第二列):

ps -ef | grep runner | awk {'print$2'}
2432
6346
6348
6350
6352
7407
7410
7416
10824
17305
17494
29658

但我想展示的pwdx <PID>COMMAND(第 8 栏)。

我怎样才能做到这一点?

答案1

不要使用 awk 来过滤 ps 输出,而是使用 ps -o 选项来获取您想要的内容:

ps -e -o pid,comm

那应该做你上面描述的事情。有关更多要打印的内容,请参阅 ps 手册页。

更新:我发现我无法使用pwdx.试穿一下尺码:

#!/bin/bash
ps -o pid= -o comm= |
while read LINE
do
    eval $(echo $LINE |
    awk '{pid=$1; comm=$2; printf "echo -n \"%s  \"; pwdx %s\n", comm, pid}' )
done

您可能需要添加标志才能ps获取您想要的进程 - 上面仅显示您的用户 ID 的进程。

答案2

如果您想打印第 2 栏和第 8 栏,只需在打印时添加 8 美元即可。

ps -ef | grep runner | awk {'print $2" "$8'}

答案3

我会这样做:

pwdx $(ps -ef | grep runner | awk {'print$2'})

替代语法:

pwdx `ps -ef | grep runner | awk {'print$2'}`

答案4

pwdx $(pgrep -f runner)|tr -d : > /tmp/1
pgrep -fl runner > /tmp/2
join /tmp/[12]

相关内容