如何将 awk 与命令一起使用以通过“ps”命令显示进程 ID

Chi*_*tel 8 ps awk

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

ps -ef | grep runner | awk {'print$2'}
2432
6346
6348
6350
6352
7407
7410
7416
10824
17305
17494
29658
Run Code Online (Sandbox Code Playgroud)

但相反,我想显示pwdx <PID>COMMAND(第 8 列)。

我怎样才能做到这一点?

Bru*_*ger 8

不要使用 awk 来过滤 ps 输出,而是使用 ps -o 选项来获得你想要的:

ps -e -o pid,comm
Run Code Online (Sandbox Code Playgroud)

那应该做你上面描述的。有关要打印的更多内容,请参阅 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
Run Code Online (Sandbox Code Playgroud)

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


Joh*_*han 5

如果您想打印第 2 列和第 8 列,只需在打印中添加 $8。

ps -ef | grep runner | awk {'print $2" "$8'}
Run Code Online (Sandbox Code Playgroud)