我可以使用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]