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

그런데 제가 보여드리고 싶은 것은 (8열) pwdx <PID>입니다 .COMMAND

어떻게 해야 하나요?

답변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]

관련 정보